Стены останавливают
Часть раздела Ввод и перемещение путешествия по 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().
Задание
ЛегкоЭтот герой проходит сквозь колонну и стены. Перемещай его с помощью velocity и 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