2014-07-16 4 views
0

Je suis en train de faire un simple effet d'aimant lorsque mon personnage est à proximité d'une pièce cela devrait passer à son posteDéplacement d'un corps à un point spécifique [Box2D, Libgdx]

J'ai ceci:

if(Mycharacter.position.x +2 >= position.x) //position = coin position 
       { 

      body.setTransform(Mycharacter.position.x, Mycharacter.position.y, 0); 
       } 

Ceci est proche de ce que je veux, mais je dois être en mesure de voir le mouvement de la pièce à mon personnage.

Je suis encore très nouveau sur Box2d et Libgdx alors si possible, gardez les gars vraiment simples, ça ne m'aide pas, je suis terrible sur la physique. Merci d'avance.

+0

Peut-être que c'était mieux adapté pour le développement de jeux? –

+0

Cette question semble arriver presque chaque semaine ... cela pourrait aider: http://stackoverflow.com/questions/24516945/calculate-correct-impluse-or-force-to-move-a-box2d-body-to -a-specific-position – iforce2d

Répondre

2

Je trouve la réponse:

if("Any condition") 
{ 
    body.setLinearVelocity((Character.position.x - position.x) * Velocity, (Character.position.y - position.y)* Velocity); 
} 

Rappel que c'est juste la façon la plus simple de réaliser ce que je voulais. Je suis sûr qu'il y a des façons plus appropriées de le faire.

0

Vous pouvez le faire:

1. Compute vector from you to coin (vx = coin.x - player.x, same for y) 
2. Compute the vectors's distance (using MathUtils.sqrt(vx*vx+vy*vy)) 
3. If distance is shorter than magnet range, then reduce the distace. 
4. recompute new vector from player to coin (vx *= (newDistance/oldDistance)) 
5. update coin'S position 
+0

Ce serait une solution non-Box2D. Lors de l'utilisation de Box2D, l'étape 4 appliquerait une force au corps où l'étape 5 serait calculée par Box2D. –

Questions connexes