CharacterBody2D
Часть раздела Ввод и перемещение путешествия по Godot на Coddy. Урок 7 из 28.
Node2D проходит сквозь стены. CharacterBody2D сталкивается с предметами. На вкладке Scene узел Hero теперь имеет тип CharacterBody2D. Его дочерний узел CollisionShape2D — это круг, задающий твёрдые границы героя. У стен и колонны тоже есть формы столкновений.
У тела есть velocity — Vector2, измеряемый в пикселях в секунду. Присваивание значения ему ничего не перемещает. move_and_slide() перемещает тело на расстояние, заданное его скоростью за один кадр, и останавливает его при столкновении с любым твёрдым объектом:
func _physics_process(delta):
velocity = Vector2(150, 0)
move_and_slide()Перемещай тела в _physics_process, который выполняется синхронно с физикой. move_and_slide() учитывает время кадра, поэтому никогда не умножай velocity на delta.
Задание
ЛегкоЗаставь героя двигаться с заданной скоростью.
- В
_physics_process(), под строкойvelocity, добавьmove_and_slide(). - Добавь отступ в один символ табуляции, как в строке выше.
Нажми «Играть»: герой плавно движется вправо со скоростью 150 пикселей в секунду и останавливается у столба. Затем нажми «Проверить».
Попробуйте сами
extends CharacterBody2D
func _physics_process(delta):
velocity = Vector2(150, 0)
Все уроки раздела Ввод и перемещение
2CharacterBody2D
CharacterBody2DХодьба с помощью скоростиСтены останавливаютХодьба повсюдуРавномерные диагоналиПотренируйтесь самостоятельно: Песочница Godot