我有 2 个对象。它将在不同的方向和距离。
我如何以特定距离实例化它们之间的对象。
var centerLocation : Vector3 = Vector3.Lerp(object2.transform.position - object1.transform.position, 0.5);
Vector3.Lerp 将以指定百分比确定 2 个 Vector3 之间的 Vector3 位置。0.5 = 50%。
我的建议是计算两个对象之间的向量,像这样
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)来检查语法。