Pregunta

Aquí está mi problema. Tengo cuerpo rígido de una ardilla (una lata de refresco de pie) que quiero cambiar su centro de gravedad a la parte inferior del objeto para que pueda caer sobre su flanco cuando se aplica una fuerza a su parte superior.

Estoy en el camino correcto?

1) Por alguna razón, estoy teniendo problemas para configurar la centro de gravedad del cuerpo de a un valor específico. Cualquier persona tiene una solución fácil por favor?

2) ¿Qué pasa con el centro de gravedad del Objeto ? ¿Es necesario cambiar también? Si es así, ¿cómo?

Gracias por aclarar eso.

Yohann T.

¿Fue útil?

Solución

No importa!

Estoy respondiendo a mis propias preguntas ya que era hace 16 horas y llegué a encontrar por mi cuenta (sí me tomó tanto tiempo para averiguarlo, lo que es una pérdida de tiempo). Por suerte para usted, voy a compartir la solución por lo que no tendrá que pasar muchas horas que averiguar.

1) Por alguna razón, estoy teniendo problemas para configurar el centro de gravedad del cuerpo a un valor específico. Cualquier persona tiene una solución fácil por favor?

Respuesta: No se puede cambiar el centro de gravedad de un cuerpo, porque en un mundo simulado real, el centro de gravedad está NO MODIFICABLES , que en realidad se transforman unlesss el objeto! ! !

La manera de hacerlo, no es crear un cuerpo con una "caja" forma. Tienes que crear el objeto con vértices para que pueda ser afectada por cualquier tipo de la física, no sólo el movimiento.

Aquí está el código que utiliza para crear un cuadro alrededor del 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) ¿Qué pasa con el centro del sprite de la gravedad? ¿Es necesario cambiar también? Si es así, ¿cómo?

utilizar este método:

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

Pero recuerde que las coordenadas se inicia en la esquina inferior izquierda de la pantalla. Sin embargo, usted no tendrá que tocar el sprite si maneja la física del cuerpo correctamente.

Buena suerte ahora!

Yohann T.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top