Unity3D 为什么Transform.Translate 中的x/y/z值经常会通过speed * Time.deltaTime获取?应该这样的

在Unity3D中,Transform.Translate通过speed * Time.deltaTime计算位移是为了确保运动不受帧率影响,保持恒定的速度。Time.deltaTime表示两帧之间的间隔时间,这样即使帧率变化,角色也能按照预设的米/秒速度移动。通过这种方式,开发者可以实现与帧率独立的平滑运动效果。
摘要由CSDN通过智能技术生成

先上代码:

public class Player : MonoBehaviour {
	protected Transform m_transform;
	public float m_speed = 1;
	// Use this for initialization
	void Start () {
		m_transform = this.transform;
	}
	
	// Update is called once per frame
	void Update () {
		float movev = 0;
		float moveh = 0;
		if (Input.GetKey (KeyCode.UpArrow)) {
			movev -= m_speed * Time.deltaTime;
		}
		if (Input.GetKey (KeyCode.DownArrow)) {
			movev += m_speed * Time.deltaTime;
		}
		if (Input.GetKey(KeyCode.LeftArrow)) {
			moveh += m_speed * Time.deltaTime;
		}
		if (Input.GetKey (KeyCode.RightArrow)) {
			moveh -= m_speed * Time.deltaTime;
		}
		m_transform.Translate (new Vector3 (moveh, 0, movev));
	}
}

上面的水平方向(x轴)的位移量moveh通过m_speed * Time.deltaTime方式获取。

我之前刚学时一直纳闷速度就速度么,直接moveh += m_speed不就完了,乘的Time.deltaTime是个什么鬼。。。(现在想来很幼稚,因为答案真的很简单/(ㄒo

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值