CharacterBody2D
本课属于 Coddy Godot 学习旅程的“输入与移动”单元。第 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)
输入与移动中的所有课
自己练习: Godot 在线编辑器