2009-11-13 7 views
2

Je progresse lentement mais régulièrement avec un jeu Cocos2d, mais je suis coincé dans la création de plateformes mobiles.Comment implémenter des plateformes mobiles avec Cocos2d, TMXTiledMaps et Chipmunk

Le personnage principal a besoin de la physique et de la détection de collision, et est donc une forme/un corps de tamia. J'ai écrit une classe pour itérer sur TMXTiledMap afin de réduire la quantité de corps dans l'espace chipmunk. Donc, avec une carte comme cette

---------- 
--------x- 
-xxx----x- 
---------- 

au lieu d'avoir 5 corps individuels (Rects), il y a deux corps, l'un est trois tuiles de large, l'autre est deux tuiles de hauteur.

J'ai réussi à faire fonctionner le code pour identifier quelles tuiles font partie d'une plate-forme mobile et pour déplacer les tuiles selon les besoins. Cependant, les corps doivent se déplacer avec les carreaux pour que cela fonctionne correctement. Et c'est là que je suis coincé. Les corps sont d'une masse statique donc ...

platformShape-> body-> p = cpv (x, y);

Ne fait rien (je devine que c'est le comportement attendu). Mais si je mets leur masse à autre chose que statique, toute la physique entre en jeu et les corps ne se comportent pas comme prévu, ou ils se comportent parfaitement selon votre façon de voir les choses. Ils se déplacent de manière erratique et tournent quand ils frappent un autre corps (par exemple: le personnage principal). Ce que je suis après, c'est le type typique de plate-forme mobile que vous vous attendez à trouver dans un jeu de plateforme typique qui se déplace sans heurt dans une direction donnée.

Ma question est; Est-ce que quelqu'un a mis en place quelque chose comme ça avant et quelle était votre technique? Ou, si vous deviez mettre en œuvre quelque chose comme ça, comment le feriez-vous?

Le code pertinent est here. Je l'ai mis dans un pastebin car je pense qu'il s'agit plus d'un malentendu conceptuel qu'autre chose.

Répondre

3

Il se trouve que vous devez appeler

cpRehashStaticShapes

Obvious vraiment, mais facile à manquer à mon avis.

Questions connexes