Étape 7: Constructions de jeu - jeu de logique - Collision Detection mise en œuvre
Lorsque vous travaillez dans l’espace à 2 dimensions, la mise en œuvre est en réalité un peu plus simple. Plutôt que d’avoir une boucle de vérifier tous les points tangents possibles sur les deux objets ou arêtes, vérification d’au plus deux points suffiront dans tous les cas.En se concentrant sur les bords supérieur et inférieur, (x, 0) et (x, Y - s) sont les points de tangence seulement possibles, où 0 < = x < = x. n’oubliez pas que chaque objet est représenté logiquement par paire ordonnée qui est son angle supérieur gauche. Si l’emplacement de la balle est (bx, b,y) et si by= 0, alors la balle est tangent à la partie supérieure de l’écran. Cela ne nécessitait qu’une seule comparaison pour savoir quand changer de l’État vers le bas. En outre, si by = Y - s, alors que le ballon doit également changer son état en se déplaçant vers le haut.
Les bords gauche et droit sont tout aussi simples. Rappelons que (0, y) et (X - s, y) sont les points de tangence possibles, où 0 < = y < = Y. L’étape suivante consiste à comparer la bx à 0 et X - s. Si bx est égale à une des valeurs suivantes, la condition de notation s’est produite. Sans doute, la balle sera réinitialisée afin de continuer à jouer.
La dernière série de cas, lorsque la balle entre en collision avec la pagaie, est seulement un peu plus difficile. Soit (p,x, p,y) est l’emplacement actuel de la raquette. En se concentrant sur la palette de gauche, la première chose à vérifier est les coordonnées x correctes. Pour la palette de gauche, tous les points de tangente verticales possibles se trouvent sur (px + w, y), où 0 < = y < = Y. logiquement, si px + w = bx, puis une collision peut se produire. Il y a quelques autres points à vérifier.
L’étape suivante consiste à comparer les coordonnées y. Graphiquement, une collision devrait se produire exactement quand n’importe quel pixel de la balle est entre les bords supérieur et inférieur de la raquette. De la section précédente sur la détection de collision, tous les points de tangence possibles peuvent qualifier tous les points entre (px + w, p,y) et (px + w, py + h) si h est la hauteur de la raquette. À ce stade, il est possible de simplifier l’algorithme en comparant seulement deux points. Si le coin supérieur gauche ou le coin inférieur gauche est tangente à la pagaie, alors il doit y avoir au moins un point de la balle qui visuellement ressemble à c’est entrer en collision avec la pagaie. En vérifiant ces deux points, l’algorithme vérifie tous les points sur le côté gauche de la boule implicitement. La palette de droite fonctionne de manière similaire, sauf les points à vérifier sont les coins haut - et bas-droite de la boule, trouvé par (b,x + s, b,y) et (b,x + s, by + s).
Lors de l’implémentation de la détection de collision, l’ordre des questions de comparaisons. Calculs et, par conséquent l’heure, peut être sauvé en vérifiant les points saillants dans un certain ordre. Prenez, par exemple, la palette de gauche. Supposons que les coordonnées y ont été vérifiées en premier dans l’algorithme. Par nature, c’est une expression compliquée dans de nombreux langages de programmation. Après que cette expression est cochée, l’étape suivante consisterait à comparer les coordonnées x. Pendant l’exécution, il serait probable que le lecteur suit le ballon étroitement sur le plan vertical, donc la première comparaison sera vraie au moins quelques fois durant le jeu, même lorsque le ballon est de l’autre côté de l’écran. L’expression de l’abscisse, cependant, sera vraie exactement une seule fois pour tout à fait quelques images. Si les comparaisons ont été retournées, le calcul ordonnée coûteux peut être sauvegardé pour être utilisés seulement exactement quand nécessaire, car il peut arriver s’avèrent quelques fois lorsqu’elle n’est pas nécessaire.
Par conséquent, la détection de collision pour les pagaies ressemblera à quelque chose comme ceci :
1. Vérifiez si bx = px
2. Vérifiez si by < = py et by < = py + h, ou si by + s < = py et by + s < = py + h
3. changer l’état de boule
Chacune des étapes suivantes doivent être remplies afin de continuer sur celle qui suit. Les collisions de bord écran fonctionnent exactement comme décrit, puisqu’il n’y a seulement un seul point à vérifier.