Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# transform.Rotate方法之间的区别是什么?_C#_Unity3d_Transform - Fatal编程技术网

C# transform.Rotate方法之间的区别是什么?

C# transform.Rotate方法之间的区别是什么?,c#,unity3d,transform,C#,Unity3d,Transform,两个可用的方法重载之间的实际区别是什么 一个版本的参数使用浮点数,而另一个版本使用的矢量3似乎使用相同的参数 两者之间是否有首选/最佳实践/更好的表现选项?文档中并没有真正说明这种或那种方式 transform.Rotate (new Vector3(0, Input.GetAxis("Mouse X") * sensitivityHor, 0)); transform.Rotate(0, Input.GetAxis("Mouse X") * sensitivityHor, 0); 两种旋转方

两个可用的方法重载之间的实际区别是什么

一个版本的参数使用浮点数,而另一个版本使用的矢量3似乎使用相同的参数

两者之间是否有首选/最佳实践/更好的表现选项?文档中并没有真正说明这种或那种方式

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

两种旋转方法几乎相同,但差异很大:

方法

public void Rotate(float xAngle, float yAngle, float zAngle);
获取三个“角度”,并按照提供的角度方向旋转对象

相反地,这种方法

public void Rotate(Vector3 axis, float angle);

获取定义旋转轴的矢量和定义角度的浮点(要旋转多少?)。例如,如果将
轴设置为
新矢量3(0f、0f、1f)并将
角度设置为
15f
,旋转方法将仅沿z轴将对象旋转15度。此旋转方法将仅检查
参数中哪个轴的值大于0,并仅围绕该轴旋转对象。

它们是相同的。我建议选择一个使代码更容易阅读的:如果你有一个可以使用的向量(例如角速度),就使用这个向量;如果每个轴都有一个浮动(例如鼠标移动),请使用接受三个浮动的轴。当您回到代码试图修复某些bug时,您最容易阅读的是什么。

使用对当前代码最方便的选项。毫无疑问,其中一个调用了另一个,但我们故意没有被告知该方法的工作方式,因为这是一个与方法的正常功能无关的内部实现细节。此外,如果将
参数设置为
新向量3(0,0,3)
,这种旋转方法仍然认为用户想要绕Z轴旋转,不会使用<代码> 3F 作为旋转乘法器。第二次<代码>旋转/<代码>方法是错误的:AsKER正在使用<代码>公共无效旋转(Voto3 EulrError)< /C> >,而不是AxIS-angle。谢谢-这就是我正在寻找的。在上面的示例中,上下文是在鼠标移动和对象旋转的范围内(如果给定指定的参数,您可能会发现这一点),使用其中一个与另一个的原因完全有道理。