up_direction Godot 引擎中的参数

up_direction parameter in godot engine

我正在学习 godotengine,我对在 move_and_slide() 方法中使用 up_direction 参数感到困惑。实际上,我不明白它的作用以及它与 is_on_floor() 方法之间的关系。

提前致谢。

move_and_slideup_direction 参数告诉 KinematicBodyKinematicBody2D 识别地板、墙壁和天花板的方向。

作为调用move_and_slide的结果,对象会移动,会发生碰撞,并且会根据与up_direction的角度对碰撞的对象进行分类。像这样:

  • 如果碰撞方向与up_direction大致相反,则为地板。
  • 如果碰撞方向与up_direction大致相同,则为天花板。
  • 否则就是墙

然后 move_and_slide 将相应地更新 is_on_flooris_on_wallis_on_ceiling

我说的是“粗略”,因为方向上的碰撞小于floor_max_angle参数的值,它仍然会被计算在内。

此外,floor_max_angle 标准也用于决定它是否会停止或滑动它碰撞的表面。如果它会滑动,那会改变速度矢量。这就是为什么 move_and_slide returns 一个新的速度向量。

同样值得注意的是,如果你通过零,一切都被认为是一堵墙。例如,如果你将 Vector2.ZERO 作为 up_direction 传递给 KinematicBody2D.move_and_slide,那么它会认为它碰撞的所有东西都是一堵墙。这对自上而下的游戏很有用