怎么实现游戏加速

做了一个弹球游戏,球的移动是在update中用 this.node.setPosition(x,y) 来实现的;
球的碰撞检测是用
var manager = cc.director.getCollisionManager();
manager.enabled = true; 实现的
现在想实现游戏整体加速,2倍,3倍,5倍等。
如果只是在update中增加球每帧的移动距离,会影响碰撞检测效果。
有没有其它方法,在不影响CollisionManager的情况下实现游戏加速。

1赞

同问。。。

同问,凑字数

1赞

http://docs.cocos.com/creator/api/zh/classes/PhysicsManager.html#fixedtimestep
改变这个值

我觉得加速度肯定还是的用this.node.setPosition(x,y) 改变值来做。。主要是你的球不要碰撞到物体受力的影响,而只要方向。速度全用this.node.setPosition(x,y) 来控制,就能达到你到效果

我以前做法是:每隔多少帧执行一次逻辑,最快就是每帧执行一次

creator没用过,但是js中是使用这个的
导演类中的cc.director.getScheduler().setTimeScale();

麻烦问一下,如果用这个方法可以改变物理引擎的检测频率,我是不是要把动作改成
var goAction= cc.moveBy(time,cc.p(x,y));
this.node.runAction(goAction);
这个样子。
因为如果还是用setPosition,球是跳跃点运动,加大检测频率,对检测结果没有影响

用调度器执行setPosition吧,然后用cc.director.getScheduler().setTimeScale();

你需要了解帧同步的一些东西,对做这种游戏内的加速减速暂停有奇效

看了一下回复内容,整合了一下,大体实现了
cc.director.getScheduler().setTimeScale(2);
cc.director.getPhysicsManager().enabledAccumulator = true;
cc.director.getPhysicsManager().FIXED_TIME_STEP = 1 / 20;

7赞

mark

了解下帧同步。有个时间缩放值。想加减速 *缩放值就行了。

cc.director.getScheduler().setTimeScale(2);
cc.director.getPhysicsManager().enabledAccumulator = true;
cc.director.getPhysicsManager().FIXED_TIME_STEP = 1 / 20;

1赞

mark

:+1:

good good good

mark一下,,

还有这个
http://docs.cocos.com/creator/api/zh/classes/Game.html#setframerate
要实现类似轨迹预判功能,可以在一帧里执行多次这个
http://docs.cocos.com/creator/api/zh/classes/Game.html#step