Question

Voici mon problème. J'ai corps rigide (une boisson gazeuse peut debout) d'un tamia que je veux changer son centre de gravité au fond de l'objet afin qu'il puisse tomber sur son flanc lorsqu'une force est appliquée à sa partie supérieure.

Suis-je sur la bonne voie?

1) Pour une raison quelconque, je ne parviens pas à régler la centre de gravité du corps à une valeur spécifique. Tout le monde a une solution facile s'il vous plaît?

2) Qu'en est-il du centre de sprite de gravité ? Ai-je besoin de le changer aussi? Si oui, comment?

Je vous remercie de cette précision.

T Yohann.

Était-ce utile?

La solution

Passons!

Je réponds à mes propres questions car il y a 16 heures et je suis arrivé à trouver sur mon propre (oui, il m'a fallu longtemps pour comprendre, quelle perte de temps). Heureusement pour vous, je vais partager la solution afin que vous n'aurez pas à dépenser beaucoup d'heures déterminer.

1) Pour une raison quelconque, je ne parviens pas à mettre le centre de gravité du corps à une valeur spécifique. Tout le monde a une solution facile s'il vous plaît?

Réponse: Vous ne pouvez pas changer le centre de gravité d'un corps parce que dans un monde réel simulé, le centre de gravité est PAS MODIFIABLE , unlesss vous métamorphoser en fait l'objet! !

La façon de le faire, est de ne pas créer un corps avec une « boîte » forme. Vous devez créer l'objet en utilisant les sommets de sorte qu'il peut être affecté par tout type de physique, non seulement le mouvement.

voici le code je pour créer une zone autour de l'objet:

int num = 4;
cpVect verts[] = {
    cpv(-15,-15),
    cpv(-15, 15),
    cpv( 15, 15),
    cpv( 15,-15),
};
body = cpBodyNew(1.0f, cpMomentForPoly(1.0f, num, verts, cpvzero));
body->p = cpv(-280, 240);
cpSpaceAddBody(space, body);
shape = cpPolyShapeNew(body, num, verts, cpvzero);
shape->e = 0.0f; shape->u = 1.5f;
shape->collision_type = 1;
cpSpaceAddShape(space, shape);

2) Qu'en est-il du centre de gravité de l'image-objet? Ai-je besoin de le changer aussi? Si oui, comment?

utiliser cette méthode:

[sprite setTransformAnchor:ccp(27,54)];

Mais rappelez-vous que les coordonnées commence au coin inférieur gauche de l'écran. Mais vous ne devrez pas toucher le sprite si vous gérez correctement les physique du corps.

Bonne chance maintenant!

T Yohann.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top