当前位置:   article > 正文

Unity的脚本的基础语法(2)-Unity中记录时间_unity 记录时间

unity 记录时间

在Unity中记录时间需要用到Time类
Time类中比较重要的变量为deltaTime(只读)
deltaTime:指完成最后一帧所花费的时间(从最后一帧到当前帧的间隔(以秒为单位)),也即是增量时间
使用:如果想均匀地旋转一个物体,在不考虑帧速率的情况下,可以乘以Time.deltaTime

//旋转
void Update () {
		this.transform.Rotate(10 * Time.deltaTime, 0, 0);
	}
//移动
void Update () {
		this.transform.Translate(0, 0, 10 * Time.deltaTime);//每秒移动10米
	}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

如果想每秒增加或者减少一个值,需要乘以Time.deltaTime,同时也要明确在游戏中是需要每秒1个单位还是每帧1个单位的效果。如果是乘以Time.deltaTime,那么游戏对象就会按固定的节奏而不是依赖游戏的帧速率,因此,游戏对象的运动变得更容易控制。

为什么要用Time.deltaTime?
Update()每一秒更新的帧数是不一样的,增量时间是实时变动的,而每一帧都是变动的。增量时间保证了无论帧率是多少,都可以让物体移动定值。
1秒30帧,那么帧量时间就是1/30秒
1秒180帧,那么帧量时间就是1/180秒

总的来说,使用Time.deltaTime可以让物体移动或者旋转指定定值。比如,每秒移动N米
例如

	public GameObject gameObject;
	void Update () {

		Vector3 te = gameObject.transform.position;//获取游戏对象的位置坐标
		te.y += 5 * Time.deltaTime;//沿y轴每秒上升5个单位
		gameObject.transform.position = te;//设置游戏对象的位置坐标

//这个方法其实和MovePOSiton方法相视
	}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

如果涉及刚体,可以写在FixedUpdate方法中。在FixedUpdate方法中,如果想每秒增加或者减少一个值,需要乘以Time.fixedDeltaTime。
例如

public GameObject gameObject;

    void FixedUpdate()
    {
        Vector3 te = gameObject.GetComponent<Rigidbody>().transform.position;
        te.y += 5 * Time.fixedDeltaTime;
        gameObject.GetComponent<Rigidbody>().transform.position = te;
   
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/108215
推荐阅读
相关标签
  

闽ICP备14008679号