Как сделать движение Top-Down персонажа в Godot 4 - от А до Я/Полный гайд
ฝัง
- เผยแพร่เมื่อ 9 ก.พ. 2025
- В этом видео я подробно расскажу, как создать движение персонажа в стиле Top-Down в Godot 4. Мы разобьём весь процесс на шаги, и я объясню каждую деталь. Я сам только начинаю разбираться в разработке игр, поэтому постараюсь сделать всё максимально понятным для новичков.
🔥 Что мы сделаем в этом видео?
✅ Напишем полный скрипт для движения персонажа в 2D игре
✅ Добавим анимации для всех направлений (вверх, вниз, влево, вправо)
✅ Настроим плавное движение и ускорение (спринт)
✅ Разберём, как работает move_and_slide() и другие важные функции
✅ Настроим логику для состояния покоя (idle) с учётом направления
🌟 Это видео отлично подойдёт тем, кто хочет научиться основам создания персонажей в Godot 4, а также тем, кто работает над RPG, приключенческими или другими top-down проектами.
Не забудьте про спрайты персонажа!
📌 Ссылка на спрайты: (через 24 часа будет работать, пока можете найти асет на itch.io)
💬 Если возникнут вопросы, пишите в комментариях - будем разбираться! Я сам только начинаю и уверен, что все мы можем учиться вместе!
Здрасте видео урок краткий и понятный желаю каналу побольше подписчиков, просмотров и лайков.
Спасибо)
Все хорошо, но какой урок не посмотри - везде wasd управление. И нигде нет управления по клику мышкой. Нигде нет выбора перса по клику и управлению им как в ртс.
я сделаю как нибудь
Ой щас скину🙄
Вращение+перемещение
extends CharacterBody2D
@export var speed = 400
func get_input():
look_at(get_global_mouse_position())
velocity = transform.x * Input.get_axis("down", "up") * speed
func _physics_process(delta):
get_input()
move_and_slide()
Просто двигаться по клику мыши(в этом случае персонаж уже не будет поворачиваться за курсором)
extends CharacterBody2D
@export var speed = 400
var target = position
func _input(event):
# Use is_action_pressed to only accept single taps as input instead of mouse drags.
if event.is_action_pressed(&"click"):
target = get_global_mouse_position()
func _physics_process(delta):
velocity = position.direction_to(target) * speed
# look_at(target)
if position.distance_to(target) > 10:
move_and_slide()
@@Pau4ok2007 Спасибо, легенда 🥇
@@Pau4ok2007 спасибо!!!
дикий говнокод, передвижение можно сделать в 2 строчки, + с анимациями еще несколько строк
+
Скинь эти две строчки)))
@@Taste-i9r извини 2 писать лень было напишу одну
velocity = Vector2(Input.get_axis("A","D"), Input.get_axis("W","S")).normalized() * 100.0
хааххах конечно я знаю эти 2 строчки НООО
Этот код работает, но он примитивен. В моём коде есть управление анимацией, спринт, idle-состояния и правильное направление персонажа. Плюс, мой код лучше организован, так что его легче расширять.
то что лучше юзать vector2 я согласен а не каждый раз прописывать велосити
@@r0mari0-69-sigma Твой код дикое говнище)