2010-10-08 7 views
0

Je tente de faire pivoter un corps box2d lié à un sprite cocos2d via GetUserData() de box2d dans mon application iPhone. Plus précisément, j'essaie de saisir le dernier emplacement tactile et de faire pivoter mon corps box2d dans cette direction. Je suis assez inexpérimenté quand il s'agit de box2d, donc tous les conseils seraient appréciés. Ci-dessous est un coup rapide sur la façon dont j'imagine que je manipulerais le corps box2d des joueurs. Je voudrais des précisions sur:cocos2d + box2d: Rotation vers le point

1) Si c'est la bonne façon de faire les choses. 2) Comment calculer l'angle entre le joueur et la dernière position tactile afin de faire pivoter mon lecteur dans cette direction.

- (void)ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    b2Body *pBody = self.playerBody; 

    if(pBody != NULL) { 
     for(UITouch *touch in touches) { 
      CGPoint location = [touch locationInView: [touch view]]; 
      location = [[CCDirector sharedDirector] convertToGL: location]; 

      CCSprite *myActor = (CCSprite*)pBody->GetUserData(); 
      pBody->SetTransform(pBody->GetPosition(), angleToRotateByInRadians); 
     } 
    } 
} 
+0

Ne pas utiliser setTransform. (Pour quiconque regarde cette question) – tallen11

Répondre

0

obtenir l'angle (en radians) entre deux points:

atan2(pointOne.x - pointTwo.x, pointOne.y - pointTwo.y) 
+2

ne devrait-il pas être 'atan2 (ydifference, xdifference)' à la place? – Lukman

Questions connexes