关于unity中移动人物时Time.deltaTime一些理解

文章讲述了在2D游戏中,通过Rigidbody2D的velocity实现人物移动时,引入Time.deltaTime的重要性,以确保在不同帧率下物体移动速度的一致性,防止因设备性能差异导致的不平滑效果。
摘要由CSDN通过智能技术生成

在一些2D游戏里通过Rigidbody2D的velocity进行人物的移动中会使用下面类似的格式

public PlayerInputControl inputControl;
public Vector2 inputDirection;
public Rigidbody2D playerRigidbody;
    
//人物速度
public float speed;

public void Move()
{
    playerRigidbody.velocity = new Vector2(inputDirection.x * speed * Time.deltaTime, playerRigidbody.velocity.y);
}

通常我们会引入一个Time.deltaTime来防止因为不同设备性能的问题导致速度不同

为什么要传入一个Time.deltaTime?

当你在移动物体时,乘以 Time.deltaTime 会使移动速度与时间间隔成比例,从而使得不同帧率下物体的移动表现一致。这是因为 Time.deltaTime 反映了两帧之间的时间间隔,当你乘以它时,实际上是将你的速度调整为“每秒移动多少单位”,而不是“每帧移动多少单位”。

举个例子,假设你有一个速度值为 10,你希望物体每秒移动 10 个单位。如果游戏帧率为 60 FPS,那么在每一帧中,物体将移动 10 * (1/60) = 0.1667 个单位。如果游戏帧率为 30 FPS,则物体将移动 10 * (1/30) = 0.3333 个单位。

假设一个设备上帧率为n(即一秒钟n帧),如果只是单纯speed(假设为10),本来你想让他一秒钟移动10个单位,但是由于帧数的原因(一秒钟运行n次move函数)最终移动了10(即speed)*n个单位,所以我们需要引入一个1/n将帧数所带入的原因消除掉,故引入了 Time.deltaTime

通过乘以 Time.deltaTime,你实际上使物体在每一帧中移动的距离与时间间隔成比例,从而使得不同帧率下物体的移动速度是一致的。因此,乘以 Time.deltaTime 是为了使得移动在不同的帧率下都保持一致。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值