Unity的脚本的基础语法(2)-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米
	}

如果想每秒增加或者减少一个值,需要乘以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方法相视
	}

如果涉及刚体,可以写在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;
   
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值