2013-09-29 3 views
0

Je suis nouveau sur le site et j'ai décidé de créer un compte parce que j'ai de la difficulté à saisir le concept de collision dans un environnement 2D. Ce que j'ai est un ensemble de sprites de route d'une perspective descendante, et j'essaye d'établir des règles pour la collision avec eux de sorte que si le joueur quitte la route, il obtiendra un jeu sur .Collision avec des objets Sprite 2D et les maths impliqués

Jusqu'à présent, j'ont des règles mises en place pour une route droite, que vous pouvez voir ici:

if ((*it)->getType() == ST_RoadStraight) 
    { 
     Road* road = (Road*)*it; 
     // Check to see if the road sprite is within 16 pixels of the bucket either way 
     int dx = road->getPosition().x - Pos.x; 
     if (dx < 0) dx = -dx; 
     if (dx > 200) 
     { 
      outOfBounds = true; 
     } 
    } 

Fondamentalement, je dis que si le joueur va à une certaine distance de toute façon sur l'axe x qu'il Je vais finir le jeu. C'est bien pour une route droite qui monte et descend ou gauche et droite, puisque je peux changer je à l'axe y, mais j'ai aussi des routes courbes. Voici une idée de ce que les actifs sont comme:

droite: http://i.imgur.com/bNHYwZO.png

courbe: http://i.imgur.com/ppPw7ED.png

Fondamentalement, j'ai besoin du lecteur pour être en mesure d'aller sur la route ou à travers où elle permet, mais si il a frappé les bords où il aurait quitté la route, je dois le dire. C'est facile avec la route droite, mais en fonction de l'endroit où le joueur est sur la route courbe, être à, disons 30 pixels de haut sur le Y pourrait bien se passer à une certaine partie de la route, mais pas d'accord à l'autre. Essentiellement, je suis à la recherche d'une sorte d'équation qui permettrait que cela soit représenté avec précision pour mon jeu.

Toute aide serait appréciée.

Répondre

0

Y a-t-il une raison pour laquelle vous ne pouvez pas utiliser Sprite Kit?

+0

J'écris actuellement ce jeu en utilisant le SDK Marmalade pour le rendre disponible pour les appareils iPhone et Android. Je pense que c'est pour la programmation xcode/objectif-c. Cependant, une trousse qui fournit le genre de collision que je cherche serait appréciée et si cela me serait toujours utile, je pourrais l'examiner. – user2829016

+0

Je pense que je devrais également mentionner cela dans Visual Studio sur Windows. – user2829016

+0

SpriteKit est un port de Box2D donc si vous pouvez trouver un autre port de Box2D qui fonctionne avec marmalade alors cela devrait être aussi bon que le kit sprite. Cocos 2D est un autre port de Box2D mais je pense que c'est aussi iOS seulement. Vous pouvez visiter le site Web Box2D ici: http://box2d.org – WolfLink

0

Bien Pour la détection de collision bidimensionnelle, je vous recommande d'utiliser le moteur physique Box2D. Il est facile à installer dans Marmalade et donne des résultats précis. Je l'ai utilisé dans beaucoup de mes jeux de marmelade. Il y a une extension box2D dans marmalade's github account. Regardez-le.