transform.Rotate方法有什么区别?

时间:2015-08-02 13:36:48

标签: c# unity3d transform

两个可用的transform.Rotate方法重载之间的实际差异是什么?

一个版本使用浮点数作为参数,而另一个版本使用看起来使用相同参数的Vector3。

两者之间是否有首选/最佳做法/表现更佳?文档并没有真正说出这种或那种方式。

transform.Rotate (new Vector3(0, Input.GetAxis("Mouse X") * sensitivityHor, 0));
transform.Rotate(0, Input.GetAxis("Mouse X") * sensitivityHor, 0);

2 个答案:

答案 0 :(得分:2)

他们是一样的。我建议选择使代码最容易阅读的那个:如果你有一个可以使用的矢量(例如角速度),使用该矢量;如果每个轴都有一个浮点数(例如鼠标移动),请使用接受三个浮点数的浮点数。当你回到试图解决一些错误的代码时,这将是你最可读的问题。

答案 1 :(得分:0)

两种旋转方法几乎相同但又非常不同:

方法

public void Rotate(float xAngle, float yAngle, float zAngle);

接受三个角度'并沿提供的角度方向旋转物体。

相反方法

public void Rotate(Vector3 axis, float angle);

采用定义旋转轴的矢量和定义角度的浮点数(要旋转多少?)。例如,如果您将axis设置为new Vector3(0f, 0f, 1f);并将angle设置为15f,则旋转方法将仅沿z轴将对象旋转15度。此旋转方法仅检查axis参数中的哪个轴的值大于0,并仅围绕该轴旋转对象。