У меня есть CCparallaxNodeExtras, который прокручивает бесконечные (после учебника по космической игре). Я добавил, как ребенку CCSprite сделанный из другого CCSprite, как это:Как получить позицию CCSprite, добавленную в CCParallaxNode?
_backgroundNode = CCParallaxNodeExtras::node();
this->addChild(_backgroundNode,-2);
float acum = 0.0;
back1 = CCSprite::create();
for(int i = 0; i < num_repeats; ++i) {
CCSprite *back = CCSprite::createWithSpriteFrameName("rock.png");
back->setPosition(ccp(acum, 0));
back1->addChild(back);
acum+= back->getContentSize().width+150.0;
}
_backgroundNode->addChild(back1, 1 , ccp(0.1,0.1), ccp(0, winSize.height * 0.64));
сейчас в моем обновлении у меня есть это:
CCPoint backgroundScrollVert = ccp(-1024, 0);
_backgroundNode->setPosition(ccpAdd(_backgroundNode->getPosition(), ccpMult(backgroundScrollVert, dt)));
совершенный, фон перемещается и исчезает (то есть то, что я хочу пока), но мне нужно получить столкновение между спрайтами на этом фоне и фиксированным спрайтом в качестве дочернего элемента основного узла.
Проблема в том, что всякий раз, когда я пытаюсь получить столкновение простым способом (пересекая ограничивающие поля), это не работает, поэтому я попытался просто получить положение спрайтов, и все, что я получаю, - это фиксированное положение в CCSprite (back1), составленном спрайтами (назад).
Теперь, есть ли возможный способ получить положение любого индивидуального спрайта, расположенного в этом параллаксном узле? Если я пытаюсь что-то вроде:
CCSprite *tempsprite = (CCSprite*)_backgroundNode->getChildren()->objectAtIndex(0);
printf("%f\n", tempsprite->getChildren()->objectAtIndex(0)->getPositionX());
он печатает всегда то же самое значение, это как позиция не влияет на трансформацию родителя в фоновом режиме узла ... так, как я могу получить его правильно ? как мне получить позицию относительно экрана, а не родитель?
Я перевел это на cocos2d-x и работал почти хорошо, мне также пришлось добавить положение фона – nosmirck