2014-06-17 2 views
2

Je travaille sur le jeu, dans lequel j'ai besoin des comportements différents de collision de différents côtés,
SPriteKit comportement de collision Manipulation de différents angles

Supposons qu'il y ait un caractère quand il entrer en collision à un autre obstacle d'un côté vers le bas, il sera se comporter
différemment.

quand il entrer en collision à tout autre obstacle ou objet alors qu'il est en haut et l'obstacle ou un objet est en dessous, alors je dois comportement différent,

quelle est la meilleure façon de acheive il. -(void)didBeginContact:(SKPhysicsContact*)contact comment être
helpfull dans mon scénario

Merci

+1

skphysicscontact vous donne le point de contact https://developer.apple.com/library/ios/documentation/SpriteKit/Reference/SKPhysicsContact/Reference/Reference.html#//apple_ref/occ/instp/SKPhysicsContact/contactPoint Check où le point de contact est en relation avec la position nodeA et nodeB. C'est-à-dire que si posA.x contactpoint.x le contact était à la droite de nodeA. – LearnCocos2D

+0

Merci pour vos commentaires. –

+0

Un autre point qui n'est pas pertinent à ma question, mais je suis un peu confus, est ce masque categroybit qui décide pour bodyA, et bodyB dans SkphysicsContact.ou en mot simple quel critère décide que le corps en contact est contact.bodyA ou contact.bodyB? Merci –

Répondre

0

m'a guidé dans la bonne direction LearnCocos2D

skphysicscontact vous donne le point de contact developer.apple.com/library/ios/documentation/SpriteKit/... Vérifiez où le point de contact est en relation avec nodeA et la position NodeB. C'est-à-dire si posA.x < contactpoint.x et posB.x> contactpoint.x le contact était à la droite de nodeA.

1

Vous ne même pas besoin du point de contact. La méthode appelée après avoir déterminé ce qui est entré en contact a accès aux nœuds en contact. Par conséquent, vous pouvez simplement comparer les emplacements x et y et les gérer en conséquence. Vous pouvez alors ignorer collisionBitMask et répliquer les collisions dans la méthode appelée par contact.

Questions connexes