08Physics
节点 | 作用 | 其他 | 例子 |
---|---|---|---|
Area2D | 检查其他物体进入区域的节点(不可见) | 可以通过修改position来移动这个节点 | 1.检查玩家进入房子(房子就是Area2D) 2.laser也是一个Area2D,检查laser是否与墙壁、物体、玩家等碰撞 |
StaticBody2D | 一个可和其他物体碰撞的静态物体 | Not supposed to be moved | 所有静态的对象:墙壁、床、障碍物 |
RigidBody2D | 仅通过物理量移动的物体(可以把它想象成一个炮弹) | 初始velocity,然后物体就会自己移动 | 手榴弹(grenade) |
CharacterBody2D | 代码控制的移动(他的意思是复杂的运动)实体 | 通过内置方法来移动它 | 基本上任何通过代码来移动的物体都会是它:玩家、敌人 |
碰撞形状:
- CollisitionShape2D
- CollisitionPolygonD
使用 CharacterBody2D/3D 节点
CharacterBody2D.move_and_slide:
move_and_slide() 根据velocity(速度)移动物体,如果跟另一个物体碰撞(返回true)则沿着物体滑动. 例如, 在平台游戏或自上而下的游戏中, 它特别有用.
当调用 move_and_slide() 时,该函数使用许多节点属性来计算其滑动行为。这些属性可以在检查器中找到,或在代码中设置。
1
2
3
4
#使用 CharacterBody2D/3D 节点
var direction=Input.get_vector("left","right","up","down")#检查四个按键事件,并返回一个方向向量的累加值。
velocity=direction*200
move_and_slide()
This post is licensed under CC BY 4.0 by the author.