2011-09-25 11 views
11

Estoy usando box2d en el iphone para crear un juego. Tengo un cuerpo que se ve afectado por la gravedad para moverse hacia abajo y no hacia la derecha o la izquierda. Será golpeado por otro cuerpo y luego se moverá hacia la derecha o hacia la izquierda. Luego tengo un botón de reinicio que mueve el cuerpo a su punto de partida. El único problema es que todavía se mueve hacia la derecha o hacia la izquierda. ¿Cómo puedo contrarrestar las fuerzas por las que una pelota ya está viajando? ¿Cómo puedo deshacerme de este movimiento hacia la derecha y hacia la izquierda cuando reinicio mi juego?Cómo detener las fuerzas que actúan sobre un cuerpo en el cuadro2d

Respuesta

25

box2d borra automáticamente las fuerzas de cada paso de simulación. Creo que solo cambias la posición de tu cuerpo al reiniciarlo, pero no su velocidad. Añadir este código a su método de reset:

body->SetLinearVelocity(b2Vec2(0,0)); 
body->SetAngularVelocity(0); 
+0

He tratado de esta manera, pero no funciona cuando dos objetos cercanos entre sí http://stackoverflow.com/questions/39716111/cocos2dx-unable-to- set-velocity-0-0 – TomSawyer

+0

@TomSawyer: probablemente colisionen después de restablecer las velocidades y eso hace que su velocidad cambie de nuevo – Andrew

+0

Creo que restablecer la velocidad hace que un objeto se detenga. es imposible colisionar con el otro. De todos modos para asegurarse de que un objeto ha sido detenido? – TomSawyer

Cuestiones relacionadas