*   >> Læs Uddannelse artikler >> science >> programming

Få at vide Irrlicht 3D-motor - Collision Detection

Download demoen og kildekode

TILBAGE TIL tutorial INDEX

Kollision detektering og reaktion er en vital del af stort set enhver 3D-spil . Det standser din karakter gå gennem vægge eller falder gennem jorden. Overraskende, vil du finde mere end en 3D-motor kræver, at du bygge din egen kollisionsdetektion system. Du kan få et par sammenstød eller vejkryds test for simple figurer som kugler, akse linje kasser og linje, men det er op til dig at faktisk teste for kollisioner, og reagere i overensstemmelse hermed.


Heldigvis Irrlicht gør omfatte kollisionsdetektion for de fleste af de almindelige situationer, du ville forvente at finde i en 3D-spil. I denne tutorial vil vi bygge ud terrænet tutorial og tilføje kollisionsdetektion, der stopper kameraet ikke bevæger sig gennem terrænet mesh.

ApplicationManager.h /ApplicationManager.cpp

Med terrænet oprettet, ved hjælp af koden fra terrænet tutorial, vi derefter oprette et terræn trekant vælgeren.


Triangle selektorer giver en måde for en genstand, som en terræn mesh, en 3D-model eller en statisk niveau, at rapportere trekanter, der findes i et bestemt område. Triangle selektorer anvendes i udstrakt grad i kollisionsdetektion.

Vi sætter derefter trekanten vælgeren vi har skabt som trekanten vælgeren til terrænet ved at kalde ISceneNode setTriangleSelector funcion. Dette kan synes lidt overflødigt, at se hvordan vi lige har oprettet vælgeren fra samme terræn objekt vi nu levere vælgeren tilbage til.

Dette sker, fordi mens trekanten vælgeren vi har skabt er en, der er optimeret til at arbejde med terræn masker, går Irrlicht giver dig mulighed for at oprette dine egne brugerdefinerede trekant vælgeren, hvis du skal. I dette tilfælde dine egne brugerdefinerede trekant selector, og ikke én skabt af terrænet objektet selv, ville blive leveret til setTriangleSelector funktionen.

På dette tidspunkt terrænet har en måde at opdage hvilke trekanter kan være involveret i en kollision, men dette alene vil ikke stoppe kameraet ikke bevæger sig igennem den.

For at vi opretter en kollision Reaktion Animator. Dette gøres ved at kalde ISceneManager createCollisionResponseAnimator funktionen, der leverer både trekanten vælgeren og kameraet.

Som standard vil createCollisionResponseAnimator funktionen oprette en ellipsoide omkring kameraet, hvilket betyder, at kameraet vil kollidere med terrænet, som om det besatte nogenlunde samme plads som en menneskel

Page   <<       [1] [2] >>
Copyright © 2008 - 2016 Læs Uddannelse artikler,https://uddannelse.nmjjxx.com All rights reserved.