Cocos2d 3.0 Бурундук с гравитацией: положение спрайта не меняется

Портирование моей игры с Cocos2d v2 на v3 Я не знаю, когда спрайты исчезают с экрана.

В v2 мое решение было:

-(void) update:(ccTime) delta
{
   // Should use a fixed size step based on the animation interval.
   int steps = 2;
   CGFloat dt = [[CCDirector sharedDirector] animationInterval]/(CGFloat)steps;

   for(int i=0; i<steps; i++){
       cpSpaceStep(space_, dt);
   }

   if (mySprite.getPhysicsBody->p.y > 500)
       [mySprite resetPosition];
}

теперь с Cocos2d v3 mySprite.physicsNode.position не меняется со временем.

Любая идея или ссылка с некоторым примером?

Спасибо.


person cimminog    schedule 25.02.2014    source источник


Ответы (1)


physicsNode.position не меняется со временем, поскольку использует пространство координат своего родительского спрайта, а не глобальное пространство координат.

Вы можете получить глобальную позицию любого узла, учитывая точку привязки, используя это:

CGPoint worldPos = [node convertToWorldSpaceAR:CGPointZero];

После этого вы можете легко преобразовать его в любое другое пространство узлов, если это необходимо (например, ваш уровень), используя:

CGPoint position = [_levelNode convertToNodeSpaceAR:worldPos];

Но имейте в виду, что вы не должны жестко указывать размер экрана в своем коде, так как он различается для каждого устройства. Вместо этого вы можете использовать:

CGSize viewSize = [[CCDirector sharedDirector] viewSize];
person Felizardo    schedule 02.03.2014