【问题标题】:Rotate instantiated prefabs旋转实例化的预制件
【发布时间】:2015-11-18 13:18:04
【问题描述】:

我正在通过以下代码在中心点周围实例化预制件...

#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));
    } 
}

我希望每个预制件都面向中心,但它们都在同一个方向旋转。我假设每次迭代都将所有“椅子”预制件旋转到当前迭代的旋转。我在这里做错了什么?

【问题讨论】:

    标签: unity3d unityscript unity5


    【解决方案1】:

    似乎所有的椅子现在都在远离原点,这就是为什么它们似乎都朝着同一个方向看。这是因为Quaternion.LookRotation 将椅子的位置向量作为输入。

    如果我理解正确,所需的输入是从椅子到centrePos 的向量。这可以通过将实例化行更改为:

        Instantiate(chair, pos, Quaternion.LookRotation(-Vector3(x, 0, z)));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-04
      • 2014-05-27
      • 1970-01-01
      • 2022-09-27
      相关资源
      最近更新 更多