在单位3d中实例化2个对象之间的游戏对象

时间:2013-06-21 08:58:23

标签: unity3d

我有2个物体。这将是各种方向和距离。

如何在特定距离之间实例化对象。enter image description here

2 个答案:

答案 0 :(得分:4)

var centerLocation : Vector3 = Vector3.Lerp(object2.transform.position - object1.transform.position, 0.5);

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

答案 1 :(得分: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)来检查语法。