嘿伙计们,我是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's tutorial关于动画CCSprites但我不知道如何实现我需要的结果.. 提前谢谢,抱歉我的英文不好!
答案 0 :(得分: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>"];
(或缓存它们并切换)
答案 1 :(得分:0)
你能澄清一下你的问题吗?如果要设置不同的精灵框架,可以使用setDisplayFrame
:
CCSpriteFrame *spriteFrame = [[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:frameName];
[sprite setDisplayFrame:frame];
或者如果你有动画:
[sprite runAction:[CCAnimate actionWithAnimation:runAnimation restoreOriginalFrame:NO]];
但我觉得这个问题有点模糊。
答案 2 :(得分:0)
如果我正确地提出了你的问题,我可以提出两种方法来解决你的问题:
首先,您可以将对象旋转到倒置,然后使用FlipX(或FlipY)标记标记为true继续您之前的动画,或者您可以添加动画,仅动画字符旋转,并且当它完成时更改FLIPX(或FlipY)状态。