godot - 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中的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)
推荐阅读
- javascript - AngularJS ng-click 仅适用于第二次单击
- python - Spyder Debug - 如何修复代码并继续单步执行
- postgresql - 如何在 PostgreSQL 中创建序列以将 nextval 添加到表已存在的 id 列?
- c++ - QT - 将 QPushButtons 与 QCheckBoxes 连接
- php - PHP OAuth 错误处理
- ios - 如何修复 AWSCore (AWS-sdk-ios) 中的 [AWSTask 异常] 崩溃
- php - 无法在指定的语言环境中显示验证错误
- mysql - mysql查询某天fk不存在的地方
- flutter - 颤振构建错误。Flutter webview插件的问题
- ubuntu - 安装 OpenMPI:C C++ 编译器不兼容链接