我正在制作一个使用统一的游戏并使一些物体旋转到位.我四处寻找如何完成这项工作并找到了解决方法.--->
public class Rotator : MonoBehaviour { int speed = 2; // Update is called once per frame void Update () { transform.Rotate(new Vector3(15, 30, 45) * Time.deltaTime *speed); } }
现在我的问题是,为什么我要做"*Time.deltaTime"?请解释这一行.
谢谢你,罗姆
要了解为什么必须使用Time.deltaTime,首先需要了解游戏引擎的高级流程.
基本上,游戏是一种应用程序,它需要不断地等待来自玩家的输入并对该输入做出反应并渲染场景.每个游戏的核心都有一个游戏循环,只要应用程序正在运行,它就会处于活动状态.这可以很简单:
while(active) { update(); // react to player's input/update player position etc render(); // render the scene }
正如你所看到的那样,循环中的代码一直被执行,直到玩家的动作导致循环终止(也许他点击了游戏菜单中的'退出').在Unity中,在游戏循环中调用附加到所有游戏对象的所有脚本的更新.
根据应用程序运行的机器,在给定的时间范围内可以有不同的更新次数,例如,您可以根据机器配置改变帧速率.如果您没有办法将所有更新以某种方式同步到真实的物理时间,那么这将非常麻烦.
为此,您在Unity Script中使用Time.DeltaTime.这只是一个参数,它告诉您自上次调用脚本的Update以来经过了多长时间.
要专门回答您的问题,将旋转更新与deltaTime相乘可以确保无论帧速率如何,对象的旋转速度都相同.