首页 > 解决方案 > Godot:我怎样才能在行进方向上旋转玩家?

问题描述

嗨,我正在尝试将我的播放器旋转到它在 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

解决方案


Godot中的ATransform有两个部分:

  • basis: aBasis保存每个轴的方向和比例。本质上是一个 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)

推荐阅读