[Résolu] SpriteKit : poussée étrange de applyImpulse
berfis
Membre
Bonjour,
Je dirige latéralement mon vaisseau, qui baigne dans un champ de gravité, à l'aide de "thrusters" gauche et droit.
J'ai factorisé les thrusters, qui poussent toujours dans la direction opposée à leur orientation. Mais j'obtiens une poussée étrange, qui semble dirigée dans la mauvaise direction.
C'est peut-être juste des maths mal utilisées:
[Class Engine: SKSpriteNode]
- (void) setOn
{
self.hidden = NO;
float dir = self.zRotation+M_PI_2;
[self.parent.physicsBody applyImpulse: CGVectorMake(self.force*cosf(dir), self.force*sinf(dir))];
}
Une petite image pour mieux me faire comprendre.
Mots clés:
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Si les maths sont bonnes, je ne vois qu'une explication:
- Mon vaisseau lutte contre la gravité à l'aide de son moteur principal, qui exerce une poussée vers le haut.
- Mes thrusters ajoutent (théoriquement) une poussée latérale.
mais tout se passe comme si, dans un cycle, on ne pouvait exercer qu'une seule poussée à la fois, en d'autres termes, quand les thrusters sont en marche, le moteur principal n'exerce plus de poussée, et le vaisseau part en chute libre.
D'où question: ne peut-on, dans un cycle, n'exercer qu'une seule poussée sur un corps? Est-ce mentionné quelque part? Si oui, dois-je du coup additionner les poussées "manuellement" et n'en effectuer qu'une ?
EDIT: C'est bon, j'ai trouvé. Quand j'appuie sur la touche gauche ou droite pour lancer les thrusters, le keyDown event "bouffe" des cycles update, dans lequel le moteur principal effectue sa poussée. Par contre, la gravité continue de s'appliquer, et donc le vaisseau tombe comme une pierre (mais en diagonale).
J'ai sorti la poussée du moteur principal du cycle update, de façon à pouvoir l'appeler depuis la routine qui gère les keyDown.
Ce n'était pas la faute de SK, mais une erreur de design de ma part. Désolé.
Que se passe-t-il si tu écris ça:
Et c'est normal que tu prennes self.zRotation mais que tu appliques l'impulsion sur le parent ?
@Céroce: Oui, c'est normal: la poussée agit sur le vaisseau-parent, pas sur le thruster lui-même.