Cambiar la dirección del motor PrismaticJoint

¿Es posible modificar la dirección del motor después de crear la junta?

Esta es la definición de articulación:

//Define a prismatic joint
b2PrismaticJointDef jointDef;

b2Vec2 axis = b2Vec2(1.0f, 0.0f);
axis.Normalize(); //Important

jointDef.Initialize(staticBody, body, b2Vec2(0.0f, 0.0f),axis);

jointDef.localAnchorA = b2Vec2(0.0f,0.0f);
jointDef.localAnchorB = body->GetLocalCenter();
jointDef.motorSpeed = 3.0f;
jointDef.maxMotorForce = +200*body->GetMass();

jointDef.enableMotor = true;

jointDef.lowerTranslation = -2.0f;
jointDef.upperTranslation = 3.0f;
jointDef.enableLimit = true;

_horPrismaticJoint = (b2PrismaticJoint*) world->CreateJoint(&jointDef);

Dentro de CCTouchesBegan intenté cambiar el valor de fuerza pero no funciona:

    _horPrismaticJoint->SetMaxMotorForce(-200.0f);

La distribución de cocos es cocos2d-iphone-1.0.1

preguntado el 04 de julio de 12 a las 09:07

1 Respuestas

Sí, solo necesita cambiar la velocidad (no la fuerza máxima):

joint->SetMotorSpeed( -3.0f );

La fuerza máxima describe qué tan fuerte es el motor de la articulación, por lo que no debe ser negativa.

Respondido 04 Jul 12, 10:07

Lo probé y funciona como quería. Gracias. Pero entonces, ¿tiene algún significado un valor negativo para MaxSpeedForce? - Carlos Zafra

No, realmente no tiene sentido. Para las uniones prismáticas, Box2D parece tratar un valor negativo como si fuera positivo de todos modos. - iforce2d

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.