Last ned demoen og kildekode
TILBAKE TIL TUTORIAL INDEX
dueller og respons er en viktig del av stort sett alle 3D-spill . Det stopper din karakter gå gjennom vegger eller falle gjennom bakken. Overraskende, finner du mer enn én 3D-motor krever at du bygge din egen duellsystem. Du kan få noen kollisjon eller skjærings tester for enkle former som kuler, akse justert bokser og linje, men det er opp til deg å faktisk teste for kollisjoner, og reagerer deretter.
Heldigvis Irrlicht ikke inkluderer dueller for de fleste av de vanlige situasjoner du forventer å finne i et 3D-spill. I denne opplæringen vil vi bygge ut terrenget opplæringen og legge dueller som stopper kameraet fra å bevege seg gjennom terrenget mesh.
ApplicationManager.h /ApplicationManager.cpp
Med terrenget opprettet ved hjelp koden fra terrenget opplæringen, vi deretter opprette et terreng trekant velgeren.
Triangle velgere gi en måte for en gjenstand, som en terreng mesh, en 3D-modell eller en statisk nivå, for å rapportere trekantene som finnes i et bestemt område. Trekant velgere brukes mye i dueller.
Vi setter trekanten velger vi har skapt som trekanten velgeren for terrenget ved å ringe ISceneNode setTriangleSelector funcion. Dette kan virke litt overflødig, ettersom hvordan vi nettopp opprettet velgeren fra samme terrenget objekt vi nå leverer velgeren tilbake til.
Dette gjøres fordi mens trekanten velger vi har skapt er en som er optimalisert for å arbeide med terreng maskene, betyr Irrlicht gi deg muligheten til å lage dine egne trekant velgeren hvis du må. I så fall dine egne trekant velger, og ikke skapt av terrenget objektet selv, ville bli levert til setTriangleSelector funksjonen.
På dette punktet i terrenget har en måte å finne ut av hvilke trekanter kan være involvert i en kollisjon, men dette alene vil ikke stoppe kameraet i å bevege seg gjennom det. For at vi skaper en kollisjon Response Animator.
Dette gjøres ved å ringe ISceneManager createCollisionResponseAnimator funksjon, leverer både trekanten velgeren og kameraet.
Som standard vil createCollisionResponseAnimator funksjon skape en ellipsoide rundt kameraet, noe som betyr at kameraet vil kollidere med terrenget som om det okkuperte omtrent samme plass som en humanoid karakter.
Vi deretter tildele animatøren til kameraet ved å kalle ISceneNode addAnimator funksjonen.
Til slutt blir både animatør og velgeren droppet.