Поворот созданных префабов

Я создаю сборные экземпляры по кругу вокруг центральной точки с помощью следующего кода...

#pragma strict

var numPoints : int = 7;
var radiusX : int;
var radiusY : int;
var chair : Transform;

function Start () {
    distributeFields();
}

function distributeFields() {
    var centrePos = Vector3(-350,24,-490);
    for (var pointNum = 0; pointNum < numPoints; pointNum++)
    {
        var i = (pointNum * 1.0) / numPoints;
        var angle = i * Mathf.PI * 2;
        var x = Mathf.Sin(angle) * radiusX;
        var z = Mathf.Cos(angle) * radiusY;
        var pos = Vector3(x, 0, z) + centrePos;
        Instantiate(chair, pos, Quaternion.LookRotation(pos));
    } 
}

Я хочу, чтобы каждый префаб был обращен к центру, но все они вращались в одном направлении. Я предполагаю, что каждая итерация вращает все префабы «кресла» в соответствии с вращением текущей итерации. Я что-то здесь делаю явно не так?


person tintyethan    schedule 18.11.2015    source источник


Ответы (1)


Кажется, что все стулья теперь смотрят в сторону от начала координат, и поэтому кажется, что они смотрят в одном направлении. Это так, потому что Quaternion.LookRotation получает вектор положения стула в качестве входных данных.

Если я правильно понимаю, желаемый ввод - это вектор от стула к centrePos. Это можно сделать, изменив строку создания экземпляра на следующую:

    Instantiate(chair, pos, Quaternion.LookRotation(-Vector3(x, 0, z)));
person maZZZu    schedule 18.11.2015