2011-05-26 5 views
4

J'ai créé une simulation numérique très simple qui modélise un objet projeté à partir d'un bâtiment à un certain angle, et lorsque l'objet heurte le sol, la simulation s'arrête. Maintenant, je veux ajouter à la détection de collision. Comment ferais-je cela? Je sais que je dois trouver l'heure exacte à laquelle l'objet (une balle) frappe le sol, ainsi que la vitesse dans les directions x et y, et la position de l'objet quand il touche le sol, et je dois ajouter paramètres qui indiquent combien la balle rebondira lors de l'impact. Mais je ne sais pas comment faire ça. Je sais qu'il y a plusieurs façons de détecter une collision, mais comme je suis nouveau dans ce domaine, la méthode la plus compréhensible serait la meilleure.Détection de collision en mouvement 2D

+1

[Wham!] (Http://www.gamasutra.com/view/feature/3015/pool_hall_lessons_fast_accurate_.php) (Ce lien démontre une méthode rapide, précise et "facile" pour détecter les collisions.) –

+1

2D, pas 1D, mouvement. –

+0

Il existe des formules simples pour trouver toutes ces informations, à moins que vous ne soyez * requis * pour le simuler, vous devriez probablement juste les regarder. Stat en calculant la [vitesse] (http://en.wikipedia.org/wiki/Velocity) et partir de là. – meagar

Répondre

1
  • Créez un système de coordonnées avec la masse à y = 0. Suivre les coordonnées de la balle à mesure qu'elle vole et ensuite vérifier quand il a y = 0, et c'est là qu'il frappe le sol. Vous pouvez également suivre la vitesse x et y lorsque la balle se déplace.

  • Utiliser Physique skillz. This est un bon tutoriel. Si vous l'avez, je recommande Fundamentals of Physics de Halliday, Resnick et Walker. Ils ont un très bon chapitre à ce sujet.

0

La détection de collision implique simplement la détermination de la distance entre deux objets.

Si vous ne souhaitez que des collisions entre les objets et le sol, vous pouvez utiliser:

if(object.y <= ground.y) { 
    //collision occurred 
} 

Pour faire des collisions entre les objets, vous pouvez parcourir tous les objets et de les comparer les uns aux autres de la même manière .

+0

Ce que je ne comprends pas, c'est comment implémenter la collision réelle. Que dois-je faire lorsqu'une collision se produit? – kachilous

+0

@kachilous Vous pouvez absorber l'énergie de sorte que l'objet colle sur le sol. Vous pouvez faire "rebondir" l'objet à la moitié de la vitesse à laquelle il arrivait au sol. Il n'y a pas de bonne réponse à cette question - cela dépend de la complexité du rendu (un moteur physique de classe mondiale!), De la rapidité (pour le rendu en temps réel comme dans les jeux) et du temps précieux de votre vie vous êtes prêt à gaspiller. (Il y a des moteurs de physique super-libres "gratuits" - Havok, Bullet, etc.) –

1

Si vous êtes juste à la recherche de la mathématique, que vous pourriez écrire le code C pour. J'ai trouvé celui-ci utile. Math Models