【问题标题】:How to calculate a Vector3 position before another object in Unity script?如何在 Unity 脚本中计算另一个对象之前的 Vector3 位置?
【发布时间】:2016-03-29 02:00:58
【问题描述】:

我有两个游戏对象: 世界空间中的 Obj1 位置 - transform.position;。 世界空间中的 Obj1 方向 - transform.TransformDirection;。 可变距离 - float distance = 5f;

我需要将 Obj2 放在 Obj1 之前的固定距离上。如何计算 Obj2 的 Vector3 位置?

【问题讨论】:

  • 你有没有尝试过什么?请分享您当前的代码,以便我们更好地了解您如何解决此问题。了解您当前的方法将使我们更容易提供有用的解决方案。

标签: unity3d scripting


【解决方案1】:

如果我猜对了,您只希望 objB 与 objA 保持固定距离,而相对位置由 objA 的方向定义。

这很容易通过让 objB 成为 objA 的孩子来实现。如果是这种情况,它将与 objA 一起移动、旋转甚至缩放。如果距离和相对方向不变,只需在场景中直接设置即可。如果它们需要可配置,则需要这样的代码:

public class KeepRelativePosition : MonoBehaviour
{
    public float distance = 5f;
    public Vector3 direction = Vector3.forward;

    void Start()
    {
       SetRelativePosition();
    }

    void SetRelativePosition()
    {
        transform.localPosition = direction.normalized * distance;
    }
}

如果您不更改预定义的值,您的对象将比对象的父对象早(-> 父本地空间中的前进方向)5 个单位。但是,您的问题的措辞不够准确,无法确定这就是您想要的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多