刚开始使用Unity,在照着教程做弹球游戏,设置了通过终点和跳下跑道两边两种终止情况,发现小球在触发游戏终止条件的时候并没停止,确切的说是左右方向的运动停止了,但还在向前运动。
在网上搜了下这个问题,再回头看我的代码发现跟timeScale有关系。球的左右移动我利用了Time.deltaTime,而向前的滚动则没有,而根据别人的经验总结如下:
1.timeScale不影响Update和LateUpdate,会影响FixedUpdate
2.timeScale不影响Time.realtimeSinceStartup,会影响Time.timeSinceLevelLoad和Time.time
3.timeScale不影响Time.fixedDeltaTime和Time.unscaleDeltaTime,会影响Time.deltaTime
timeScale会影响Time.deltaTime,也就是说我没有在小球的向前运动中加入deltaTime,则timeScale变成0时并不会使小球停止向前。
另外看到有朋友用的addForce方式让小球运动的,既不是写在FixedUpdate里面,而且去掉deltaTime也一样能成功使球停下,这是为什么呢?虽然不清楚addForce的源码,但从物理上想,ft=mv,输入的是力,终究还是要转化成速度和位移,这个t还是必须要的,所以我猜想这个方法的实现用到了deltaTime。