Unity3d根据俯仰角,横滚角和偏航角列表平滑地旋转对象

时间:2018-11-13 22:35:39

标签: c# unity3d

我想根据从API调用获得的角度(俯仰,横滚和偏航)列表平滑地旋转对象(平面)。响应对象是下面的 Rootresponse

public class ResponseData
{
    public List<int> x; //roll
    public List<int> y; //yaw
    public List<int> z; //pitch
}

public class RootResponse
{
    public ResponseData data;
    public string status; //status of the api call
}

我尝试使用以下代码使用while循环遍历 FixedUpdate 方法中每一帧的值。这会引发“ ArgumentOutOfRange” 异常。

如果按照文档使用transform.Roatate或Quarternion角度,我只能获得最终位置。

在这种情况下,我可以选择的最佳方法是什么?

void FixedUpdate(){
    if(shouldUpdate) { //set to true for a success response from the api call
        while(ind < dataLen) {
            transform.position = Vector3.MoveTowards(new Vector3(batData.x[ind], batData.y[ind], batData.z[ind]), new Vector3(batData.x[ind+1], batData.y[ind + 1], batData.z[ind + 1]), speed * Time.deltaTime);
            ind++; //to increment the index every frame
        }
    }
}

1 个答案:

答案 0 :(得分:1)

您(可能)不希望将一帧范围内的所有旋转与旋转速度无关。

相反,您应该跟踪遍历该帧队列的过程中正在旋转多少,如果遇到这种情况,请退出while循环。

TableT1