Unity this.transform.Translate(Vector3.down * moveSpeed * Time.deltaTime)
2016-04-07 19:14
519 查看
教程中(BeatPlane,背景下移)看到用下面这个语句,表示的意思是让对象向下,以moveSpeed 单位/s的速度平移,研究了一下为什么:
首先API
作用是使对象向着某一个方向平移一段距离,如
就表示向下平移了1个单位,
那么怎么理解下面这条语句表示以moveSpeed单位/s的速度平移呢?
我另外一篇博客写过,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不是一个定值,就忽略不计啦。(貌似积分可以精确算出,不深究了。。)
// Update is called once per frame void 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 frame void 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做AR
- Unity3D for VR 学习(10): Unity LOD Group 组件
- Unity3D for VR 学习(9): Unity Shader 光照模型 (illumination model)
- Unity3D for VR 学习(8): Unity Shader概述
- Unity3D for VR 学习(7): 360°全景照片
- Unity3D for VR 学习(6): 再次温故知新-3D数学
- Unity3D for VR 学习(4): 自绘摄像机的视口区域锥体
- Unity3D for VR 学习(3): 暴风魔镜PC Input小改造–自己动手、丰衣足食
- Unity3D for VR 学习(2): 暴风魔镜框架探索
- Unity3D for VR 学习(1): 又一个新玩具 暴风魔镜 4(Android)
- [Unity游戏开发]向量在游戏开发中的应用(三)
- Unity3D shader 人物被选中光环/技能范围光环
- 3dsMax导入Unity3d要注意的问题
- unity3d创建材质时,无法添加材质贴图的解决方法
- Unity后期处理-抗锯齿
- Unity Drawcall 优化
- 【unity小技巧之三】添加自定义拓展,动态向某个类注入静态函数
- Unity3D研究院之异步加载游戏场景与异步加载游戏资源进度条(三十一)
- unity中使用usafe代码的设置
- [置顶] Unity开发规范(个人习惯,仅供参考)