У меня есть 2 объекта. Он будет в различном направлении и на расстоянии.Создайте объект игры между двумя объектами в единстве 3d
Как я могу создавать объекты между ними с определенным расстоянием.
У меня есть 2 объекта. Он будет в различном направлении и на расстоянии.Создайте объект игры между двумя объектами в единстве 3d
Как я могу создавать объекты между ними с определенным расстоянием.
Мое предложение было бы вычислить вектор между двумя объектами, как этот
Vector3 objectLine = (object2.transform.position - object1.transform.position);
Магазин величиной этого вектором
float distance = objectLine.magnitude;
Затем, нормализует вектор;
objectLine = objectLine.normalized;
Итерация по линии, instanciating объект, который вы хотите создать определенные расстояния
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, проверяет, находится ли он внутри двух объектов, и если это так, инициализируйте объект, сохраняя его в списке игровых объектов.
Это, надеюсь, должно это сделать. У меня нет единства (или любой IDE) передо мной, чтобы проверить синтаксис.
var centerLocation : Vector3 = Vector3.Lerp(object2.transform.position - object1.transform.position, 0.5);
Vector3.Lerp определит местоположение Vector3 между 2 Vector3s с заданным процентом. 0,5 = 50%.
гораздо более элегантное решение, это должен быть принятый ответ – raphadko