为什么要使用新的Vector3?有什么区别?

时间:2018-07-07 03:02:40

标签: c#

我对c#完全陌生,并且对编程而言还很陌生,但是大约2周以来,我一直在观看许多教程并逐步完成这些步骤。我喜欢看这些教程,因为它使我可以继续学习,有助于理解某些功能。但是,有时会出现一些叙述者似乎滑过的东西,而我留下的只是想记住要做的事,但我想知道为什么。

话虽如此,这是我旋转对象的代码。效果很好。

transform.Rotate(15 * Time.deltaTime, 30 * Time.deltaTime, 45 * 
Time.deltaTime);

我想首先知道为什么我不能做:

transform.Rotate(15, 30, 45) * Time.deltaTime;

第二,我想知道本教程为何建议以下行,以及为什么我应该使用该行。

 transform.Rotate (new Vector3 (15, 30, 45) * Time.deltaTime);

请在这里帮助我理解概念! 谢谢您的时间

2 个答案:

答案 0 :(得分:1)

您提供的第二个示例不会产生预期的输出。

transform.Rotate(15, 30, 45) * Time.deltaTime;

“旋转”功能是实际应用旋转的功能。因此,这将导致使用定义为(15,30,45)的向量进行旋转。然后,您只需将结果乘以旋转完成后的增量时间即可。

第一个示例只是第三个示例的更详细的版本,因此我将仅介绍第三个示例。第三个函数初始化向量,将其乘以Time.deltaTime,然后对此结果调用transform.Rotate函数。这将导致预期的行为。

基本上,请跟踪您的操作顺序。括号(函数调用)位于任何外部乘法之前。

答案 1 :(得分:0)

在这段代码transform.Rotate(15, 30, 45) * Time.deltaTime;中,*运算符应用于Rotate方法返回的对象。更改旋转参数为时已晚。

Vector3实现*运算符。这样编写代码更简单易读。

我们很幸运,Rotate方法具有更多的实现,可以接受3个双精度值或单个Vector3值。您可以根据需要决定使用哪种实现。