戈多3d得到向前传染媒介

时间:2018-01-25 08:10:54

标签: vector 3d godot

我想知道是否有办法在Godot 3d中获得空间节点的前向矢量。

在统一中,这只是变换。前进。

Godot给了我一个旋转矢量,但我不知道如何将它转换为方向矢量。

什么是戈多的transform.forward版本?

6 个答案:

答案 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)

答案 5 :(得分:-1)

它与Vector3.FORWARD有什么关系吗?

enter image description here

    transform.position += Vector3.forward * Time.deltaTime;