2011-09-25 12 views
11

Sto usando box2d su iPhone per creare un gioco. Ho un corpo che viene colpito dalla gravità per spostarsi verso il basso e non verso destra o verso sinistra. Sarà colpito da un altro corpo e si muoverà a destra oa sinistra. Poi ho un pulsante di reset che riporta il corpo al punto di partenza. L'unico problema è che si sta ancora muovendo a destra oa sinistra. Come posso contrastare le forze che una palla sta già viaggiando? Come posso liberarmi di questo movimento a destra e a sinistra quando resetto il mio gioco?Come fermare le forze che agiscono su un corpo in box2d

risposta

25

box2d elimina automaticamente ogni fase della simulazione. Penso che stai solo cambiando la posizione del tuo corpo durante il ripristino, ma non è la velocità. Aggiungere questo codice al metodo di ripristino:

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

Ho provato questo modo, ma non funziona quando due oggetti vicini l'uno all'altro http://stackoverflow.com/questions/39716111/cocos2dx-unable-to- set-velocity-0-0 – TomSawyer

+0

@TomSawyer: probabilmente si scontrano dopo aver ripristinato le velocità e questo fa cambiare nuovamente la loro velocità – Andrew

+0

Penso che resettare la velocità faccia fermare un oggetto. è impossibile scontrarsi con l'altro. Ad ogni modo per assicurarsi che un oggetto sia stato fermato? – TomSawyer