0

ここでは、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;
    }
}

どうすればこの問題を解決できますか。

4

3 に答える 3

0

Cocos2dは可変時間ステップを使用します:このスケジュールされたセレクターの最後の呼び出しからのdt秒単位の時間です。オブジェクトが1秒あたりに移動する必要のある距離(ポイント単位)の場合は、オブジェクトの位置を。だけ変更する必要があります。gameSpeedgameSpeed * dt

于 2012-09-04T18:49:03.730 に答える
0

1.すべてのprintfおよびcocos2Dログを削除しました。2。画像の読み込み用に別のスレッドを追加しました。3.HDモードで2048x2048の代わりに複数の1024x1024スプライトシートを使用しました。

于 2012-09-14T19:15:19.537 に答える
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

お役に立てれば。:)

于 2016-10-30T06:49:18.040 に答える