0

私がこれを考えすぎているのかどうかはわかりません..しかし、キャラクターがさまざまな方向に動いているときに表示されるスプライトを調整できるようにしようとしています.

たとえば、プレイヤーの指がキャラクターの上にある場合、「moveUp」フレームに移動したいと考えています。プレイヤーの指がキャラクターの下にある場合は「moveDown」フレームに移動し、それ以外の場合は「normalState」フレームにとどまります。

誰かがこの例を見せてもらえますか? または、この種の方法でスプライト シート/スプライトを実装するための優れた一般的なチュートリアルを教えてください。

私はデモ プロジェクトでスプライト シートを調べて使用しましたが、これをリリースすることを検討しており、適切かつ最も成功した方法でアプローチしたいと考えています。

ありがとう!!

4

1 に答える 1

1

スプライト シートを作成したり、パックしたりしたことがあると思います (私は TexturePacker が好きです)。コードは次のようになります。

...init...
    //Place all sprite frames from sprite sheet into cache
    [[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"spriteSheet.png"];


    CCSpriteBatchNode *gameBatchNode = [CCSpriteBatchNode batchNodeWithFile:@"spriteSheet.png"];
    CCSprite *player = [CCSprite spriteWithSpriteFrameName:@"moveUp"];

    [gameBatchNode addChild: player];
....

- (void) ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    UITouch *aTouch = [touches anyObject];

    CGPoint touchPosition = [player.parent convertTouchToNodeSpace:aTouch];
    CGPoint touchPositionRelativeToPlayer = ccpSub(touchPosition, player.position);

    if(touchPositionRelativeToPlayer.y > 0)
        [player setDisplayFrame:[[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:@"moveUp"]];
    else
        [player setDisplayFrame:[[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:@"moveDown"]];
}

他の方向 (W、E、NW など) が必要な場合は、touchPositionRelativeToPlayerを使用して角度に変換し、それからatan2フレームを決定することをお勧めします。

于 2012-08-08T20:58:53.927 に答える