2011-04-29 3 views
0

Salut les gars, je développe l'application dans cocoas2d en utilisant la boîte 2d cadre de travail, mais malheureusementjoint de la souris ne fonctionne pas pour limiter la balle dans la partie la moitié de l'écran

je ne suis pas en mesure de limiter la balle grise dans la zone d'écran de la moitié de l'image montrée ici je veux que la balle ne pas aller partie opposée de l'écran

J'ai utilisé le b2Mousejoint pour déplacer la balle autour de l'écran

b2PrismaticJointDef restreindre sur un axe particulier Mais
je veux restreindre sur la zone rect particulière de l'écran image of my trouble

+0

Je pense que vous devriez gérer l'événement de restriction au toucher plutôt qu'avec une articulation. Dans l'événement ccTouchmoved, vous définissez la cible de l'articulation de la souris si la cible se trouve dans le rectangle souhaité. – hiepnd

Répondre

0

Vous pouvez créer votre joint de distance personnalisée qui restreindra axes globaux de la balle. Mais ce sera difficile si vous n'écrivez jamais votre propre moteur physique.

Il existe 2 façons plus simples d'implémenter ce que vous voulez.

  1. Créer 4 boîtes de "bordure" statiques autour de la zone où la bille doit rester. Ensuite, placez la balle et les boîtes dans un groupe de collision.

enter image description here

Cependant, la réponse des boîtes "frontière" ne sera pas instantanée. Par conséquent, la balle à haute vitesse va parfois "couler" dans les boîtes, puis être sauté.

  1. Vous pouvez corriger la position et réinitialiser manuellement la vitesse de la boule en code lorsqu'elle dépasse les limites de la zone souhaitée. Mais cela peut conduire à la simulation physique instable.
Questions connexes