2013-05-12 4 views
0

J'ai un champ dans unity3d qui contient des creux (comme des petits trous). La pente du champ mène toujours vers la dépression la plus proche. Une sphère est lâchée au hasard quelque part dans le champ, roule un peu jusqu'à ce qu'elle s'arrête dans l'une des dépressions.Comment faire pour arrêter une boule/sphère

Le problème est que cela prend trop de temps. Il pourrait rouler pendant 5-10 secondes jusqu'à ce qu'il s'arrête. Je voudrais arrêter plus vite.

Des idées comment je peux y parvenir? Edit: Le problème principal est lorsque la balle est à côté de la dépression, mais elle a une vitesse de 90 degrés par rapport au trou, puis elle commence à tourner en rond et prend un moment pour s'arrêter.

+2

Vous pouvez ajouter votre propre script d'amortissement qui mesure le changement de position par rapport à la dépression la plus proche. Si ce changement reste continuellement inférieur à un certain seuil, terminez la vélocité de la sphère. – Jerdak

+0

Je veux que ça s'arrête au milieu de la dépression ... mais je pourrais appliquer une force constante vers le centre de la dépression la plus proche, ça pourrait marcher. Je vais essayer, merci. – tbkn23

+0

Si vous utilisez la physique (cela semble être le cas), vous pouvez également augmenter la friction dynamique du matériau physique. – Heisenbug

Répondre

0

Ok, après avoir reçu des conseils dans les commentaires, et l'expérimentation, c'est la façon dont je l'ai résolu:

  1. Appliquer une petite mesure de force vers la dépression
  2. Si la vitesse actuelle est plus 30 degrés du centre de la dépression, ralentir la balle (appliquer une force dans le sens opposé de la vitesse)
  3. SI la balle se rapproche du centre de la dépression, l'arrêter et la placer au centre

Merci pour tous les conseils. Si quelqu'un trouve une meilleure solution, je suis toujours ouvert aux suggestions.

Questions connexes