0

嘿伙计们,我是 cocos2d 和 iPhone 开发的新手,我目前正在尝试创建像“PapiJump”这样的游戏,我目前遇到的问题是在我的游戏中为角色 CCSprite 设置动画,我已经创建了 3 张我的图像字符,指向右、左和中间的字符 (http://i53.tinypic.com/ngzoyh.png)

所以当角色改变它的方向(左或右)时,它不会直接“跳”到另一个方向,但会动画..

在我使用 TouchesEnded 方法的代码中,在此方法中我设置了一个名为“touchState”的变量,因此如果用户触摸屏幕的右侧,它会将“touchState”设置为 1,否则将其设置为 2(表示左侧)。

然后在“init”方法中,我创建了一个“schedule”,它每 0.5 秒运行另一个名为“updateGame”的方法,“updateGame”方法更新玩家的位置,它的工作方式如下: player.position = ccp(player .position.x , player.position.y - playerGravity.y);

我已经阅读了Ray 的关于动画 CCSprites 的教程,但我不知道如何实现我需要的结果。在此先感谢并为我的英语不好感到抱歉!

4

3 回答 3

3
NSMutableArray *walkAnimFrames = [NSMutableArray array];
for(int i = 1; i <= 4; ++i)
{
    [walkAnimFrames addObject: [[CCSpriteFrameCache sharedSpriteFrameCache]     spriteFrameByName: [NSString stringWithFormat:@"spr_fillin_0%d.png", i]]];
}
CCAnimation *walkAnim = [CCAnimation animationWithFrames:walkAnimFrames delay:0.0333f];

_sprite = [CCSprite spriteWithSpriteFrameName:@"spr_fillin_01.png"];
[_sprite runAction:[CCRepeatForever actionWithAction: [CCAnimate actionWithAnimation:walkAnim restoreOriginalFrame:NO]]];

[<CCLAYER OR BATCH NODE> addChild:_sprite];

编辑:看起来你在谈论只是翻转图像。你可以重新获取一个精灵

_sprite = [CCSprite spriteWithSpriteFrameName:@"<New Sprite File>"];

(或缓存它们并切换)

于 2012-02-13T17:50:34.963 回答
0

如果我正确地回答了您的问题,我可以建议两种方法来解决您的问题:
首先,您可以将对象旋转到倒置,然后使用 FlipX(或 FlipY)标志标记为 true 继续您以前的动画,或者您可以添加一个动画仅对角色旋转进行动画处理,并且在完成时更改 FLipX(或 FlipY)状态。

于 2011-04-05T18:07:58.813 回答
0

你能澄清你的问题吗?如果要设置不同的精灵帧,可以使用setDisplayFrame

CCSpriteFrame *spriteFrame = [[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:frameName];
[sprite setDisplayFrame:frame];

或者如果您有动画:

[sprite runAction:[CCAnimate actionWithAnimation:runAnimation restoreOriginalFrame:NO]];

但我觉得这个问题有点模糊。

于 2011-04-05T17:24:55.133 回答