iPhone Cocos2D's Chipmunk - Centro de Gravidade
-
21-09-2019 - |
Pergunta
Aqui está o meu problema. Eu tenho um corpo rígido de um chipmunk (uma lata de refrigerante) que eu quero mudar seu centro de gravidade para o fundo do objeto para que possa cair em seu flanco quando uma força é aplicada à sua parte superior.
Estou no caminho certo?
1) Por algum motivo, estou tendo problemas para definir o centro de gravidade do corpo para um valor específico. Alguém tem uma solução fácil, por favor?
2) E quanto ao Centro de Gravidade de Sprite? Eu preciso mudar isso também? Se sim, como?
Obrigado por esclarecer isso.
Yohann T.
Solução
Não importa !
Estou respondendo às minhas próprias perguntas desde que há 16 horas atrás e encontrei por conta própria (sim (sim, demorei tanto tempo para descobrir, que perda de tempo). Felizmente para você, vou compartilhar a solução para que você não precise gastar tantas horas descobrindo.
1) Por algum motivo, estou tendo problemas para definir o centro de gravidade do corpo como um valor específico. Alguém tem uma solução fácil, por favor?
Resposta: Você não pode mudar o centro de gravidade de um corpo porque em um mundo real simulado, o centro de gravidade é Não é modificável, a menos que você realmente se transforme no objeto! ! !
A maneira de fazer isso não é criar um corpo com uma forma de "caixa". Você precisa criar o objeto usando vértices para que ele possa ser afetado por qualquer tipo de física, não apenas movimento.
Aqui está o código que eu usei para criar uma caixa ao redor do objeto:
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) E o centro de gravidade do Sprite? Eu preciso mudar isso também? Se sim, como?
Use este método:
[sprite setTransformAnchor:ccp(27,54)];
Mas lembre-se de que as coordenadas começam no canto inferior esquerdo da tela. Mas você não terá que tocar o sprite se lidar com a física do corpo corretamente.
Boa sorte agora!
Yohann T.