Je crée un jeu de tir à défilement horizontal 2D et j'ai un peu de mal avec la détection de collision pour les balles. Tout, y compris les puces, sont des objets avec leurs propres polygones / méthodes de mise à jour.
Le problème est que les balles vont vite, et à 60 images par seconde (ce à quoi le jeu se déroule), une balle sautera souvent à travers un mur - car elle se déplace plus que la largeur du mur pendant l'intervalle de mise à jour - et continuer joyeusement sur son chemin puisque les polygones ne se chevaucheront jamais réellement.
Que puis-je faire à ce sujet? La seule chose que j'ai pu trouver est de tracer une ligne de l'ancienne position à la nouvelle position et de faire une détection de collision là-dessus, mais le dessin de ligne pour la détection de collision est recommandé par la documentation de slick2d. Comment puis-je résoudre ça?
Réponses:
Les approches standard sont (en choisir une):
Pour cette question, vous pouvez plutôt modéliser vos balles sous forme de rayons - si cela correspond à l'apparence de votre jeu, comme dans left4kdead . De cette façon, vous n'avez pas besoin d'approximer les balles sous forme de rayons, car ce sont déjà des rayons. Du point de vue de l'apparence, cela peut sembler décent si vous tracez la ligne avec un point plus clair à l'extrémité de la balle, ou dessinez simplement la ligne en dégradé de la lumière (extrémité de la balle) à l'obscurité (extrémité de la queue), ce qui lui donne une apparence de mouvement.
Je conviens que dans la plupart des cas, l'utilisation de graphiques pour la détection de collision est un peu malavisée, mais la détection de collision au pixel près est exactement cela, et est une technique acceptée. Je suppose que tout dépend de ce que vous voulez réaliser et de la rapidité. Si vous n'avez pas besoin d'un jeu très rapide avec de nombreux corps + action, allez-y. Sinon, il vaut mieux utiliser l'une des approches décrites ci-dessus.
la source
Si vous voulez que vos balles se comportent comme des objets physiques réalistes (par exemple, vos balles ressemblent plus à des flèches ou à des pierres d'une catapulte qu'à des tirs d'armes à feu), vous pouvez également essayer d'augmenter la fréquence de vos mises à jour physiques.
Ainsi, bien que votre jeu puisse fonctionner avec 60 images par seconde, votre simulation physique pourrait s'exécuter à 120 mises à jour par seconde (voici le correctif omniprésent de votre article d' horodatage qui explique une bonne configuration physique qui peut fonctionner à une vitesse différente de la boucle de rendu).
Bien sûr, l'augmentation de l'intervalle de mise à jour sur le moteur physique mettra une charge plus importante sur le processeur. Cette approche n'est donc sensée que si vos projectiles ne se déplacent pas très rapidement (ce que je supposais puisque vous êtes en mesure de dire que vos projectiles se déplacent en arc).
la source