*   >> lukeminen koulutus Artikkelit >> science >> programming

Making 3D-peli, jossa Ogre - Collision Detection

Collision (object1); }}}} Return true;}

luokkiin kuten soitin, Ase ja Enemy että laajennettu PersistentFrameListener luokan nyt laajentaa CollisionObject luokka. Alla voit nähdä, kuinka Enemy luokka toteuttaa Collision toiminto.

 void Enemy :: Collision (CollisionObject * muut) {jos (Muut-> GetCollisionType () == PLAYER_WEAPON_CT) {Ase * ase = static_cast (muut ); this-> kilvet - = weapon-> GetDamage (); jos (this-> suojukset GetCollisionType () == PLAYER_CT) {sammutus (); }} 

BasicEnemy luokka toteuttaa GetBoundingSphere toiminnon käyttäen rakennettu getWorldBoundingSphere toiminto, joka on käytettävissä kaikissa Ogre MovableObjects (olennaisesti kaikki visuaaliset Ogre esineitä).


 Sphere BasicEnemy :: GetBoundingSphere () {palata this- > mesh-> getWorldBoundingSphere ();} 

muutoksia Weapon, Bullet ja pelaaja luokat ovat samankaltaisia. Voit katsoa lähdekoodia nähdä erityisiä muutokset näihin luokkiin.

Main.cpp

päätehtävä on päivitetty käynnistys ja sammutus CollisionManager luokka.

 # include "OgreEngineManager.h" #include "WeaponDatabase.h" #include "EnemyDatabase.h" #include "GameLevel.h" #include "CollisionManager.h" #include "IrrKlangEngineManager.

h" #if OGRE_PLATFORM == OGRE_PLATFORM_WIN32 # määritellä WIN32_LEAN_AND_MEAN # include "windows.h" INT WINAPI WinMain (HINSTANCE hInst, HINSTANCE, LPSTR strCmdLine, INT) #elseint main (int argc, char ** argv) # endif {ENGINEMANAGER.AddNewResourceLocation (ResourceLocationDefinition ("FileSystem", "../../media", "Yleinen")); ENGINEMANAGER.AddNewResourceLocation (ResourceLocationDefinition ("zip", "../../media/media.zip", "Yleinen")); jos (ENGINEMANAGER.Startup (std :: string ("plugins.cfg"), std :: string ("ogre.cfg"), std :: string ("ogre.log '))) {IRRKLANGENGINEMANAGER.

Startup (); ENEMYDATABASE.Startup (); WEAPONDATABASE.Startup (); COLLISIONMANAGER.Startup (); GAMELEVEL.Startup ("Level1.XML"); ENGINEMANAGER.StartRenderLoop (); COLLISIONMANAGER.Shutdown (); WEAPONDATABASE.Shutdown (); ENEMYDATABASE.Shutdown (); GAMELEVEL.Shutdown (); IRRKLANGENGINEMANAGER.Shutdown (); } ENGINEMANAGER.Shutdown ();}

Näiden muutosten viholliset voi kuvata ja pelaaja ja viholliset voi myös törmäävät.

Tällä hetkellä vihollisia ja aseita yksinkertaisesti poistetaan taso, joka on hieman epätyydyttävä, mutta taustalla mekaniikka paikallaan se on helppo l

Page   <<  [1] [2] [3] [4] [5] [6] >>
Copyright © 2008 - 2016 lukeminen koulutus Artikkelit,https://koulutus.nmjjxx.com All rights reserved.