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.

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top