【问题标题】:Instantiate gameobject between 2 objects in unity 3d在统一 3d 中实例化 2 个对象之间的游戏对象
【发布时间】:2013-08-13 07:45:42
【问题描述】:

我有 2 个对象。它会在不同的方向和距离上。

如何在它们之间实例化具有特定距离的对象。

【问题讨论】:

    标签: unity3d


    【解决方案1】:
    var centerLocation : Vector3 = Vector3.Lerp(object2.transform.position - object1.transform.position, 0.5);
    

    Vector3.Lerp 将以指定百分比确定 2 个 Vector3 之间的 Vector3 位置。 0.5 = 50%。

    【讨论】:

    • 更优雅的解决方案,这应该是公认的答案
    【解决方案2】:

    我的建议是计算两个对象之间的向量,像这样

    Vector3 objectLine = (object2.transform.position - object1.transform.position);
    

    存储该向量的大小

    float distance = objectLine.magnitude;
    

    然后,对向量进行归一化;

    objectLine = objectLine.normalized;
    

    遍历线,实例化你想要创建特定距离的对象

    Vector3 creationPoint = object1.transform.position;
    float creationPointDistance = (object1.transform.position - 
        object1.transform.position);
    while(creationPointDistance < distance)
    {
        creationPoint += objectLine * NEW_OBJECT_DISTANCE;
        creationPointDistance = (object1.transform.position - 
            object1.transform.position);
        if(creationPointDistance < distance)
        {
            objects.Add((GameObject)Instanciate(newObject, creationPoint, 
                new Vector3(0.0f,0.0f,0.0f)));
        }
    }
    

    这样做是将初始点设置为 object1 的位置。然后它将沿对象 1 和对象 2 之间的向量移动一段设定距离,检查它是否在两个对象内,如果是,则实例化该对象,并将其存储在游戏对象列表中。

    希望应该这样做。我面前没有 Unity(或任何 IDE)来检查语法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-06
      • 2019-05-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-16
      相关资源
      最近更新 更多