しばらく前から 2-D ゲームボーイ スタイルの RPG に取り組んでおり、ゲーム ロジックはほぼすべて完成しているので、見栄えをよくするための作業を始めています。私が気づいたことの1つは、歩行の動き/画面の動きが少し途切れていることです. 技術的には問題なく動作するはずですが、多くの処理能力を消費するか、画面の移動とスプライトの移動の間のタイミングの不一致が原因で、いくつかの癖があるようです。
スプライトを移動するには、移動先がわかったら、次のように呼び出します。
tempPos.y += 3*theHKMap.tileSize.width/5;
id actionMove = [CCMoveTo actionWithDuration:0.1 position:tempPos];
id actionMoveDone = [CCCallFuncN actionWithTarget:self selector:@selector(orientOneMove)];
[guy runAction:[CCSequence actions:actionMove, actionMoveDone, nil]];
[self setCenterOfScreen:position];
次に、orientOneMove で次のように呼び出します。
[self.guy setTexture:[[CCTextureCache sharedTextureCache] addImage:@"guysprite07.png"]]; //the walking picture-I change texture back at the end of the movement
id actionMove = [CCMoveTo actionWithDuration:0.15 position:self.tempLocation2];
id actionMoveDone = [CCCallFuncN actionWithTarget:self selector:@selector(toggleTouchEnabled)];
[guy runAction:[CCSequence actions:actionMove, actionMoveDone, nil]];
同時に実行される setCenterOfScreen:position メソッドのコードは次のとおりです。
id actionMove = [CCMoveTo actionWithDuration:0.25 position:difference]; [self runAction:
[CCSequence actions:actionMove, nil, nil]];
そのためsetCenterOfScreen
、カメラは 1 つのきれいな動きで動き、男の動きは 2 つのアクションに分割されてアニメーション化されます (これは非効率的であると私は信じています)。男は常に完全に画面の中央にいるとは限りません。移動中、彼はしばしば一瞬 1 ピクセルか 2 ピクセルずれます。アイデア/解決策はありますか?