本文主要是介绍Unity this.transform.Translate(Vector3.down * moveSpeed * Time.deltaTime),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
教程中(BeatPlane,背景下移)看到用下面这个语句,表示的意思是让对象向下,以moveSpeed 单位/s的速度平移,研究了一下为什么:
// Update is called once per framevoid Update () {this.transform.Translate(Vector3.down * moveSpeed * Time.deltaTime);}
首先API
public void Translate(Vector3 translation, Space relativeTo = Space.Self);
作用是使对象向着某一个方向平移一段距离,如this.transform.Translate(Vector3.down * 1);
就表示向下平移了1个单位,
那么怎么理解下面这条语句表示以moveSpeed单位/s的速度平移呢?
// Update is called once per framevoid Update () {this.transform.Translate(Vector3.down * moveSpeed * Time.deltaTime);}
我另外一篇博客写过,Time.deltaTime表示上帧到本帧所用时间,为了好理解,先假设Time.deltaTime(下面写成△t)是一个定值,
那么this.transform.Translate(Vector3.down * moveSpeed * Time.deltaTime);这句就表示了1△t位移了moveSpeed * △t个单位的距离。
现在我们来算一下1s位移了多远:
1s位移的距离=1s/△t * moveSpeed * △t=moveSpeed
看到没有,这样设置产生的效果就是1s中唯一了moveSpeed个单位,那么速度也就是moveSpeed 单位/s 了,至于△t不是一个定值,就忽略不计啦。(貌似积分可以精确算出,不深究了。。)
这篇关于Unity this.transform.Translate(Vector3.down * moveSpeed * Time.deltaTime)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!