如何使平面仅在一个轴上旋转?

时间:2017-07-23 21:45:09

标签: c# animation unity3d 3d unity5

如何制作飞机到"外观"只在一个轴上旋转,在相机上?

例如,我有一架来自管道的烟雾质地的飞机。如果我在管道周围走动,飞机应始终面向摄像机,沿y轴旋转。但是烟雾的方向不应该改变,因此,与x和z轴一起,平面不应该旋转。

以下是一个有助于在所有轴上旋转平面的代码示例:

void Update() 
{
transform.LookAt(Camera.main.transform.position, -Vector3.up);
}

如何仅在一个轴上旋转?

1 个答案:

答案 0 :(得分:2)

一种方法是使用transform.eulerAngles将对象的原始旋转存储在Vector3中。然后,您可以在LookAt函数完成后创建另一个Vector3来存储对象的旋转。然后,您可以仅使用第二个变量中的y值并使用原始x和y值将对象的旋转设置为新的Vector3。它看起来像这样:

void Update()
{
    Vector3 originalRotation = transform.eulerAngles;
    transform.LookAt(Camera.main.transform.position, -Vector3.up);
    Vector3 newRotation = transform.eulerAngles;
    transform.eulerAngles = new Vector3(originalRotation.x, newRotation.y, originalRotation.z);
}