使用Controls iOS动画船

时间:2012-08-08 20:08:17

标签: ios animation cocos2d-iphone

不知道我是否过度思考这个问题......但是我正在努力调整我的角色向不同方向移动时所显示的精灵。

例如,如果玩家手指在角色上方,我希望它转到'moveUp'框架。如果玩家的手指低于我想要进入'moveDown'框架的角色,否则保持在'normalState'框架。

有人能给我看一个例子吗?或者直接告诉我一个关于以这种方式实现Sprite表/ Sprites的一般指南。

我已经完成并在演示项目中使用精灵表,但我希望发布这个并希望以正确和最成功的方式接近它。

谢谢!

1 个答案:

答案 0 :(得分: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等),我建议你使用touchPositionRelativeToPlayeratan2转换为一个角度,并从中确定帧。