zoukankan      html  css  js  c++  java
  • 关于Unity中Time.deltaTime的使用

    例子

    void Update () {
      this.transform.Rotate(Vector3.up, Time.deltaTime * 50, Space.World);
      //绕世界的y轴旋转,1秒钟转50度,Space.World是让它绕世界坐标系的y轴旋转,没写的话会绕它自己坐标系的y轴旋转
      //显然,Time.deltaTime是按照每秒来统计的。 Update()的刷新是按照每帧来显示的,但是Time.deltaTime是按照秒来统计的。
      //我的理解是我们这里只设置它1秒钟,也就是1个Time.deltaTime转多少度,系统会帮我们计算每一帧该转多少度(除于当前秒的帧数,如流畅时候60),然后每次update的时候都转这个它自己计算好的角度
    }

    还可以这样理解

    Time.deltaTime * 50
    表示1秒要转动多少角度,我们设置好以后,这个值就定下来了,也就是说,不管中间刷新几次,执行几次Update函数,最终的结果就是在1秒钟内,物体绕y轴旋转了50度。
    而具体中间刷新了几次,执行了几次Update则是受电脑性能的影响,性能好的话可以达到60次,性能不好的话可能只有30次。
    然而,刷新60次的效果就会看起来很流畅,而刷新30次的效果就会看起来很卡,像是漂移过去的。
    但是不管过程怎么样,结果都是一样的,系统会帮我们计算每一秒能刷新多少次,也就是每一秒有几帧,然后帮我们把Time.deltaTime * 50除于每秒的帧数,得到每一帧该旋转的角度数,给Update里面的语句执行。
    所以,其实每一帧的旋转的度数不是一定的,会随着帧频的改变而改变,而帧频又受各种硬件因素和其他因素的影响会不断变化。

  • 相关阅读:
    塔防游戏 代码project as 分享
    iOS网络监控— BMReachability
    Oracle学习(五):多表查询
    Servlet之生命周期【入门版(刚開始学习的人必看)】
    mysql 流程函数 存储引擎 InnoDB简单特性
    js
    UVa 10245
    Ubuntu14.04怎样使用root登录
    leetCode(29):Happy Number
    WebService:asp.net类库中添加WebService引用出现问题解决方法
  • 原文地址:https://www.cnblogs.com/HangZhe/p/7258290.html
Copyright © 2011-2022 走看看