Анимация CCSprite на cocos2d? - PullRequest
       26

Анимация CCSprite на cocos2d?

0 голосов
/ 05 апреля 2011

Привет, ребята, я новичок в разработке cocos2d и iPhone, сейчас я пытаюсь создать игру типа «PapiJump», В настоящее время у меня проблемы с анимацией персонажа CCSprite в моей игре, Я создал 3 изображения моего персонажа: персонаж направлен вправо, влево и в середину (http://i53.tinypic.com/ngzoyh.png)

поэтому, когда персонаж меняет свое направление (влево или вправо), он не «прыгает» прямо в другое направление, но оживляет.

В моем коде я использую метод TouchesEnded, в этом методе я устанавливаю переменную с именем "touchState", поэтому, если пользователь коснулся правой стороны экрана, он установит «touchState» на 1, в противном случае он установит его на 2 (означает «влево»).

затем в методе «init» я создал «расписание», которое каждые 0.5 секунды запускает другой метод с именем: «updateGame», метод "updateGame" обновляет позицию игрока, он работает так: player.position = ccp (player.position.x, player.position.y - playerGravity.y);

Я прочитал Учебник Рэя по анимации CCSprites, но я не знаю, как достичь нужного мне результата. Заранее спасибо и извините за мой плохой английский!

Ответы [ 3 ]

3 голосов
/ 13 февраля 2012
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>"];

(или кешировать их и переключать)

0 голосов
/ 05 апреля 2011

если я правильно понял ваш вопрос, я могу предложить два способа решения вашей проблемы:
сначала вы можете повернуть объект, пока он не перевернется, и продолжить ваши предыдущие анимации, используя флаг FlipX (или FlipY), помеченный какЗначение true или вы можете добавить анимацию, которая анимирует только вращение персонажей и, когда она будет закончена, изменяет статус FLipX (или FlipY).

0 голосов
/ 05 апреля 2011

Можете ли вы уточнить свой вопрос?Если вы хотите установить другой фрейм спрайта, вы можете использовать setDisplayFrame:

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

или если у вас есть анимация:

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

Но я чувствую, что вопроснемного расплывчато.

...