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里面的语句执行。
    所以,其实每一帧的旋转的度数不是一定的,会随着帧频的改变而改变,而帧频又受各种硬件因素和其他因素的影响会不断变化。

  • 相关阅读:
    Vue 使用Scss,深度修改局部样式
    Sublime Text 插件:批量删除空白行
    Sublime Text 3前端开发常用优秀插件介绍
    常用的sublime text 3插件(很爽哦)
    20 个强大的 Sublime Text 插件
    Java多线程之synchronized详解
    进阶Java多线程
    初识Java多线程
    分布式锁实现的正确打开方式
    分布式session实现方式
  • 原文地址:https://www.cnblogs.com/HangZhe/p/7258290.html
Copyright © 2011-2022 走看看