Как заставить спрайт прыгать как лягушка в игре cocos2d-x ios с использованием c ++

0

Я пытаюсь сделать спрайт как лягушку, которая придет из верхней части экрана и будет идти вниз на дно на оси y = 0. Он работает нормально, как обычный CCMoveTo, но я хочу, чтобы после прыжка лягушка оставалась в течение 1 секунды, затем снова прыгайте. Какой-то задержка в движении. Может кто-нибудь сказать мне с этим. Я тоже добавляю свой код. моя анимация лягушки от fly1.png до fly5.png. Мне просто нужно задержка после каждого хода, или мы можем сказать, что я просто хочу вызвать CCMove после 1-секундной задержки каждый раз, пока лягушка не достигнет оси y = 0 Любая помощь будут оценены. Спасибо.

#include "HelloWorldScene.h"
#include "SimpleAudioEngine.h"
using namespace cocos2d;
using namespace CocosDenshion;

CCScene* HelloWorld::scene()
{

CCScene *scene = CCScene::create();

HelloWorld *layer = HelloWorld::create();

scene->addChild(layer);

return scene;
}


bool HelloWorld::init()
{

if ( !CCLayer::init() )
{
    return false;
}
CCSize winSize=CCDirector::sharedDirector()->getWinSize();

_bgNode = CCNode::create();
_bgNode->setPosition(ccp(winSize.width/2, winSize.height/2));
this->addChild(_bgNode, -1);

_bgSprite = CCSprite::create("bg_2.jpg");
_bgNode->addChild(_bgSprite);

float rX = winSize.width/_bgSprite->getContentSize().width;
float rY = winSize.height/_bgSprite->getContentSize().height;

_bgNode->setScaleX(rX);
_bgNode->setScaleY(rY);

z=CCSprite::create("fly1.png");
z->setScaleX(rX);
z->setScaleY(rY);
z->setPosition(ccp(winSize.width/2,winSize.height+1));
this->addChild(z);
CCAction *a=CCRepeatForever::create(HelloWorld::getAnimationWithFrames(1,5));
z->runAction(a);

z->runAction(CCSequence::create(CCMoveTo::create(2.0, ccp(winSize.width/2, 0)), CCCallFuncN::create(this, callfuncN_selector(HelloWorld::setInvisible)), NULL));

return true;
}

cocos2d::CCAnimate* HelloWorld::getAnimationWithFrames(int from, int to)
{
CCArray* frames = CCArray::create();


for (int i = from; i <= to; i++)
{
    CCString *str = CCString::createWithFormat("fly2%d.png", i);
    CCSpriteFrame *f = CCSpriteFrame::create(str->getCString(), CCRect(0,0,256,400));
    frames->addObject(f);
}
//(frames,speedofmovementofanimation);
CCAnimation *animation = CCAnimation::createWithSpriteFrames(frames,0.15f);

CCAnimate *a = CCAnimate::create(animation);
return a;
}

void HelloWorld::setInvisible()
{
this->removeChild(z,true);
}
  • 0
    Метод CCJumpTo и CCJumpBy используют для перехода по спрайту вместо CCMoveTo.
  • 0
    я хочу, чтобы лягушка отдыхала на секунду после каждого прыжка. Можете ли вы помочь мне в этом?
Показать ещё 11 комментариев
Теги:
cocos2d-x
xcode4

1 ответ

0
Лучший ответ
        Firstly, you have to create a frogJump() function. Then,in frogJump() function add the following code:

        void HelloWorld::frogJump()

        {

        CCJumpTo* jumpTo = CCJumpTo::create(1,ccp(x/6,y/8),y/1.2f,1);

        z->runAction(jumpTo);

        }

        Then, in the init() function add the following line:


       this->scheduleOnce(SEL_SCHEDULE(&HelloWorld::frogJump),0);
  this->schedule(SEL_SCHEDULE(&HelloWorld::frogJump),2);
  • 0
    братан, на самом деле я должен выполнить какое-то действие, когда оно достигнет оси Y = 0, поэтому я использовал cccalfunc в действии перемещения

Ещё вопросы

Сообщество Overcoder
Наверх
Меню