我有一个精灵,有一个动作,通过它向右侧移动。
CCSprite *spaceShip1=CCSprite::create("ufo_1.png");
spaceShip1->setPosition(ccp(visibleSize.width/8,visibleSize.height/2));
this->addChild(spaceShip1, 3);
CCMoveBy* moveleft1 = CCMoveBy::create(3, ccp(visibleSize.width, 0));
spaceShip1->runAction(moveleft1);
我想得到sprite的当前视觉位置,因为它因runAction而移动,它应该返回它的更新位置。
我正在使用:
spaceShip1->getPosition();
这个职位在这里使用:
CCParticleSystemQuad* _spaceShip1 = new CCParticleSystemQuad();
_spaceShip1 = CCParticleSystemQuad::create("growingFlare.plist");
_spaceShip1->setPosition(spaceShip1->getPosition());
_spaceShip1->setAngle(180);
_spaceShip1->setScale(5);
_spaceShip1->stopSystem();
this->addChild(_spaceShip1, 4);
粒子效应必须发生在宇宙飞船的当前位置,但它始终在宇宙飞船的初始位置生效。
我试图获得精灵的当前位置。但它总是返回初始位置而不是当前的移动位置。
我需要做些什么才能获得目前的职位?
答案 0 :(得分:0)
float xPos = spaceShip->getPositionX();
float yPos = spaceShip->getPositionY();
CCLog("%f %f", xPos, yPos);
在想要获取移动精灵的当前x,y位置的方法中尝试此操作。它不会得到你现在得到的初始位置。
答案 1 :(得分:0)
在init()期间发生粒子初始化。动画不是现场,因此总是会给出初始位置。
您有2个选项。
答案 2 :(得分:0)
可能会帮助你
CCParticleSystemQuad* _spaceShip1 = new CCParticleSystemQuad();
_spaceShip1 = CCParticleSystemQuad::create("growingFlare.plist");
_spaceShip1->setPosition(spaceShip1->getPositionX(), spaceShip1->getPositionY());