我想知道是否有办法在Godot 3d中获得空间节点的前向矢量。
在统一中,这只是变换。前进。
Godot给了我一个旋转矢量,但我不知道如何将它转换为方向矢量。
什么是戈多的transform.forward版本?
答案 0 :(得分:1)
转发是您应该决定的。我通常这样做:
DataTable
如果在设计资产和场景时对此有约定,当然会有所帮助。我始终将-Z用作前进键,但如果您愿意,可以选择其他方式。
答案 1 :(得分:0)
我使用get_global_transform().basis.z
答案 2 :(得分:0)
SanzioSan在使用base.z向量方面是正确的,但是他对它的解释不够好。从本质上讲,这是一个非常简单的问题。
如果您尝试在3d中拖动对象或让对象跟随屏幕,则可以使用与此类似的代码:
var transform_hold_obj = node_to_hold_obj.get_global_transform()
transform_hold_obj.origin = transform_hold_obj.origin - transform_hold_obj.basis.z * some_distance_between_you_and_object
obj_being_dragged.set_transform(transform_hold_obj)
在我的情况下,transform_hold_obj来自我的相机节点。我要选择一些物体跟随相机。此代码位于连接到要拖动对象的某些脚本中。 base.z向量是我的前向向量或相机指向的方向。
答案 3 :(得分:0)
我知道现在有点晚了,但我提出了构建自己的前向和左向 Vector 的解决方案。它在 c# 中,但应该很容易转换为 GDScript。希望对某人有所帮助。
Vector3 forward = new Vector3(-(float)Math.Sin(Rotation.y), 0, -(float)Math.Cos(Rotation.y));
Vector3 left = new Vector3((float)Math.Sin(Rotation.y - Math.PI/2), 0,
(float)Math.Cos(Rotation.y - Math.PI/2));
答案 4 :(得分:0)
使用 transform.basis.z
是因为:
https://docs.godotengine.org/en/stable/tutorials/3d/using_transforms.html#obtaining-information
答案 5 :(得分:-1)