我有一个
Node3D
,我想平滑地过渡到某个目标旋转(以欧拉角,以度为单位给出)。
当我在欧拉角向量(模 360)的所有 3 个维度上手动应用
lerp(...)
时,效果很好。然而,当我尝试使用 Tween
(这似乎是 Godot 4 中此类用例的首选方式)时,我会得到疯狂的中间旋转 - 最终位置再次很好。
我在这里做错了什么吗?谁能给我一个如何使用 Tween 将
Node3D
正确旋转到给定目标旋转的示例?
当我遇到同样的问题时遇到了这个问题。这就是我通过简单旋转解决它的方法。对于更高级的东西,您可能需要研究四元数旋转:
# example degrees
var x_degrees: float = 0
var y_degrees: float = 45
var z_degrees: float = 25
# put degrees in Vector3
var target_rotation = Vector3(
deg_to_rad(x_degrees),
deg_to_rad(y_degrees),
deg_to_rad(z_degrees)
)
#create tween and apply rotation property
var rotate_tween = get_tree().create_tween()
rotate_tween.tween_property(player, "rotation", target_rotation, 0.5) #example time