这里我想从上到下移动一些cocos2D精灵对象。精灵r在屏幕中的随机位置生成。有时候所有精灵的运动都不稳定......我不能使用CCMove,因为我想保持精灵之间的相等距离。
[self schedule: @selector(updateObjects:)];
-(void)updateObjects:(ccTime) dt
{
//when I print dt, it gives different value..
//jerk comes when this value s larger than ideal value..
for(Obstacles *Obs in ObsArray)
{
CGPoint pos = Obs.position;
pos.y -= gameSpeed;
Obs.position = pos;
}
}
我该如何解决这个问题。
答案 0 :(得分:0)
Cocos2d使用可变时间步长:dt
是自此调度选择器的上次调用以来的时间。如果您的gameSpeed
是物体必须每秒移动的距离(以磅为单位),那么您必须按gameSpeed * dt
更改对象位置。
答案 1 :(得分:0)
解决了问题 1.删除所有printf和cocos2D日志 2.为图像加载添加了单独的线程。 3.在HD模式下使用多个1024x1024精灵表代替2048x2048。
答案 2 :(得分:0)
我有同样的问题,我尝试了很多东西,最后我发现它会在Android设备和ios设备上更多的混乱..它们渲染的帧率应该在恒定间隔更新..如果你使用更新方法然后设置常量增量时间
例如我使用了更新方法
void MyClass::update(float dt) {
int positioniteration=8;
int valocityiteration=8;
world->Step(1/60.0,valocityiteration,positioniteration);//60 FPS }
我还在appdelegate中添加了这些行
director->setDepthTest(false);
director->setProjection(Director::Projection::_2D);// MY GAME IS 2D SO USED 2D PROJECTION .. IT HELPED ME
希望这会有所帮助。:)