Cocos2D移动精灵有时生涩

时间:2012-09-04 17:34:41

标签: cocos2d-iphone

这里我想从上到下移动一些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;
    }
}

我该如何解决这个问题。

3 个答案:

答案 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

希望这会有所帮助。:)