0

私はこのチュートリアルに従って、タイルベースのマップを作成し、キャラクターを動かしました。次に、このチュートリアルに従って、動きのスプライトアニメーションを追加しました。私は動きのために次のようなものを思いついた:

[self stopAction: cameraMoveAction];
[playerSprite stopAction:playerMoveAction];
[playerSprite runAction: targetAction];

self.playerMoveAction = [CCSequence actions:
                         [CCMoveTo actionWithDuration: MOVEMENT_SPEED * 4 position: newPosition],
                         [CCCallFunc actionWithTarget: self selector: @selector(finishedMoving)],
                         nil
                         ];

self.cameraMoveAction = [CCSequence actions:
                         [CCMoveTo actionWithDuration: MOVEMENT_SPEED * 4 position: [self calculateNewCenterOfScreen: newPosition]],
                         nil
                         ];

[self runAction: cameraMoveAction];
[playerSprite runAction: playerMoveAction];

ご覧のとおり、私はプレーヤーとカメラの両方を動かしています(プレーヤーを常に中央に保つため)。また、通話中にカメラをプレーヤーの中央に配置しようとしましたfinishedMovingが、それは非常に悪く見えました(プレーヤーが移動すると、カメラがプレーヤーの位置に移動します)。

これを行うためのより良い方法はありますか?

4

1 に答える 1

1

指定したノードを自動的にフォローする CCFollow アクションを試すこともできます。プレーヤーを移動するときは、次のように呼び出します。

[layer runAction: [CCFollow actionWithTarget:playerNode]];

于 2012-08-26T10:46:59.257 に答える