0

不知道我是不是想太多了……但我正在努力调整当我的角色向不同方向移动时显示的精灵。

例如,如果玩家的手指在角色上方,我希望它转到“moveUp”帧。如果玩家的手指在角色下方,我想进入“moveDown”框架,否则停留在“normalState”框架。

有人可以给我看一个例子吗?或者指导我阅读有关以这种方式实现 Sprite 表/Sprites 的一般教程。

我已经在演示项目中使用并使用了精灵表,但我希望发布它并希望以正确和最成功的方式来处理它。

谢谢!!

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 回答