【发布时间】:2021-08-16 20:26:18
【问题描述】:
我正在学习 godotengine,我对在 move_and_slide() 方法中使用 up_direction 参数感到困惑。其实我不明白它是做什么的,它和 is_on_floor() 方法有什么关系。
提前致谢。
【问题讨论】:
标签: godot
我正在学习 godotengine,我对在 move_and_slide() 方法中使用 up_direction 参数感到困惑。其实我不明白它是做什么的,它和 is_on_floor() 方法有什么关系。
提前致谢。
【问题讨论】:
标签: godot
move_and_slide 的up_direction 参数告诉KinematicBody 或KinematicBody2D 识别地板、墙壁和天花板的方向。
调用move_and_slide的结果是,物体会移动,它会发生碰撞,它会根据up_direction的角度对碰撞的物体进行分类。像这样:
up_direction 大致相反,则为地板。up_direction大致相同,则为天花板。然后move_and_slide 将相应地更新is_on_floor、is_on_wall 和is_on_ceiling。
我说“大致”,因为在偏离小于floor_max_angle 参数值的方向上的碰撞,它仍然会计数。
此外,floor_max_angle 标准还用于决定它是否会停止或滑动它所碰撞的表面。如果它会滑动,这会改变速度矢量。这就是为什么move_and_slide 返回一个新的速度向量。
另外值得注意的是,如果你通过零,一切都被认为是一堵墙。例如,如果你将Vector2.ZERO 作为up_direction 传递给KinematicBody2D.move_and_slide,那么它会认为它碰撞的所有东西都是一堵墙。这对于自上而下的游戏很有用
【讨论】: