Téléchargez la démo et le code source
Retour à la index du tutoriel
La détection de collision et la réponse est une partie essentielle de tout jeu à peu près 3D . Il arrête votre personnage à travers les murs ou la chute à travers le sol. Étonnamment, vous trouverez plus d'un moteur 3D vous oblige à construire votre propre système de détection de collision.
Vous pouvez obtenir quelques tests de collision ou d'une intersection pour les formes simples comme des sphères, axe aligné boîtes et en ligne, mais il est à vous de tester réellement pour les collisions, et réagir en conséquence.
Heureusement Irrlicht ne comprend la détection de collision pour la plupart des situations courantes que vous attendez à trouver dans un jeu en 3D. Dans ce tutoriel, nous allons construire hors du tutoriel de terrain et ajouter la détection de collision qui arrête la caméra de se déplacer à travers le maillage du terrain.
ApplicationManager.
h /ApplicationManager.cpp
Avec le terrain créé, à l'aide le code de l'tutoriel de terrain, nous créons alors un sélecteur terrain de triangle.
sélecteurs
Triangle fournissent un moyen pour un objet, comme un maillage du terrain, un modèle 3D ou un niveau statique, de signaler les triangles qui existent dans une zone spécifique. Sélecteurs de Triangle sont largement utilisés dans la détection de collision.
Nous mettons alors le sélecteur de triangle, nous avons créé le sélecteur de triangle pour le terrain en appelant le funcion ISceneNode setTriangleSelector.
Cela peut sembler un peu redondant, car la façon dont nous venons de créer le sélecteur du même objet terrain nous fournir maintenant le sélecteur revenir. Cela se fait parce que tandis que le sélecteur de triangle, nous avons créé est celui qui est optimisé pour travailler avec des mailles de terrain, Irrlicht ne vous donne la possibilité de créer votre propre sélection personnalisée de triangle si vous avez besoin. Dans ce cas votre propre sélection personnalisée de triangle, et non celui créé par l'objet de terrain lui-même, seraient fournis à la fonction de setTriangleSelector.
À ce stade, le terrain comporte un moyen de détecter les triangles peuvent être impliqués dans un collision, mais cela ne suffira pas à arrêter la caméra de se déplacer à travers elle. Pour cela, nous créons une réponse Animator Collision. Cela se fait en appelant la fonction ISceneManager createCollisionResponseAnimator, fournissa