Стены останавливают
Часть раздела Ввод и перемещение путешествия по Godot на Coddy. Урок 9 из 28.
Стены и колонна — это узлы StaticBody2D. Статическое тело никогда не движется. У каждого есть CollisionShape2D для его твёрдой формы и ColorRect, чтобы его нарисовать.
Только move_and_slide() проверяет наличие стен. Изменение position перемещает тело без проверки, поэтому оно проходит сквозь стены:
position.x += direction * speed * delta # сквозь стены
velocity.x = direction * speed # останавливается при столкновении со стенами
move_and_slide()Текст после # — это комментарий. Godot пропускает его.
Тело, которое ударяется о стену под углом, сохраняет составляющую движения вдоль стены. Оно скользит, а не застревает, что и объясняет название move_and_slide().
Задание
ЛегкоСделай так, чтобы стены останавливали героя.
- Замени строку
position.xна такую, которая задаётvelocity.xзначениеdirection * speed, безdelta. - Под ней вызови
move_and_slide().
Нажми «Играть» и пройдись в обе стороны: столб и стена останавливают героя. Затем нажми «Проверить».
Попробуйте сами
extends CharacterBody2D
var speed = 200
func _physics_process(delta):
var direction = Input.get_axis("move_left", "move_right")
position.x += direction * speed * delta
Все уроки раздела Ввод и перемещение
2CharacterBody2D
CharacterBody2DХодьба с помощью скоростиСтены останавливаютХодьба повсюдуРавномерные диагоналиПотренируйтесь самостоятельно: Песочница Godot