【问题标题】:Godot: How can I rotate player in direction of travel?Godot:我怎样才能在行进方向上旋转玩家?
【发布时间】:2021-11-02 21:58:22
【问题描述】:

您好,我正在尝试将我的播放器旋转到它在 godot 中移动的方向。代码如下:

if Input.is_action_pressed("move_forward"):
    rotate_object_local(Vector3.UP, 1)
    transform.basis = Basis()
if Input.is_action_pressed("move_backward"):
    rotate_object_local(Vector3.UP, -1)
    transform.basis = Basis()
if Input.is_action_pressed("move_left"):
    rotate_object_local(Vector3.LEFT, 1)
    transform.basis = Basis()
if Input.is_action_pressed("move_right"):
    rotate_object_local(Vector3.LEFT, -1)
    transform.basis = Basis()

我浏览了无数的论坛和教程,试图找出它为什么不起作用。任何帮助深表感谢! :)

【问题讨论】:

    标签: godot


    【解决方案1】:

    Godot 中的Transform 有两个部分:

    • basis:一个Basis,它保存每个轴的方向和比例。本质上是一个 3 x 3 矩阵。
    • origin:保存翻译的Vector3

    现在,看看你的代码。您正在将 basis 设置为默认值:

    transform.basis = Basis()
    

    这里的Basis() 是对Basis 的默认构造函数的调用,它为您提供了Basis 的标识。

    而且,正如您所料,这将重置任何轮换。它正在撤消rotate_object_local 所做的一切。因此发布的代码没有效果。

    如果不设置basis,应该可以观察到旋转。


    大概您想在应用新的轮换之前重置轮换。例如:

        transform.basis = Basis()
        rotate_object_local(Vector3.UP, 1)
    

    【讨论】:

    • 非常感谢,这更有意义,我现在就试试
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-23
    • 1970-01-01
    • 1970-01-01
    • 2022-12-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多