[Pillola] Come creare un gioco 3D - Pag 2
  • In diretta da GamesVillage.it
    • News
    • -
    • In Evidenza
    • -
    • Recensioni
    • -
    • RetroGaming
    • -
    • Anteprime
    • -
    • Video
    • -
    • Cinema

Pag 2 di 16 PrimoPrimo 1234512 ... UltimoUltimo
Visualizzazione risultati da 16 a 30 di 231

Discussione: [Pillola] Come creare un gioco 3D

Cambio titolo
  1. #16
    --]-[eLioS-- L'avatar di Squall L.
    Registrato il
    10-02
    Messaggi
    689
    Scusa Eclipse ma nella tua libreria non c'è una funzione per il salto del personaggio? Vorrei far saltellare un po' Rigell!
    ______The Truth is Out There______



  2. #17
    Nameless Hero
    Registrato il
    04-03
    Località
    Campo vecchio:tutti morti
    Messaggi
    397
    C'è irrlitch 0.6 da scaricare il 0.5 non è scaricabile...

  3. #18
    --]-[eLioS-- L'avatar di Squall L.
    Registrato il
    10-02
    Messaggi
    689
    Io ho aggiunto un secondo personaggio: l'ho preso dai sorgenti dell'Irrlicht. Adesso ho 2 personaggi nella mappa. si potrebbe creare un menù di scelta per sceliere quale personaggio muovere con i tasti?
    ______The Truth is Out There______



  4. #19
    Bannato L'avatar di Eclipse
    Registrato il
    02-04
    Località
    C++atania
    Messaggi
    5.604
    Nella prossima lezione visto che lo desideri metterò come fare saltare e sparare il personaggio e come creare un menù iniziale.

    Intanto se ti va puoi sperimentare qualcosa facendo muovere l'altro tuo personaggio con altri tasti, magari le lettere oppure facendo in modo che premendo F2 si selezioni rigell e con f3 si selezioni l'altro durante il gioco, (un po' come le squadre speciali su Rainbow Six o su hidden and dangerous) ecco 1 metodo che puoi usare:

    metti questo su globali:

    scene::IAnimatedMeshSceneNode* personaggio_selezionato=0;

    sul loop principale modifica i vari "if (GetAsyncKeyState(VK_UP)) {PW_Muovi_Oggetto(rigell,6);

    anim=1;}" ecc con

    if (GetAsyncKeyState(VK_UP)) {PW_Muovi_Oggetto (personaggio_selezionato,6); anim=1;}

    ecc per tutti i comandi... poi anche su "aggiusta camera" invece di

    PW_Lega_Camera_a_Oggetto(camera,rigell,100);

    metti

    PW_Lega_Camera_a_Oggetto(camera,personaggio_selezionato,10 0);

    poi sempre dentro al loop, magari sotto gli altri comandi via tastiera così il codice è più ordinato, aggiungi le righe

    if (GetAsyncKeyState(VK_F2)) personaggio_selezionato=rigell;
    if (GetAsyncKeyState(VK_F3)) personaggio_selezionato=altropersonaggio;

    dove al posto di "altropersonaggio" devi mettere la variabile che hai usato x l'altro personaggio.

    Se ti interessa iscriviti al forum di Playerworld.it se non ci sei ancora e magari posta qualche screenshot dei cambiamenti che hai apportato alla lezione! Ci sono molti ragazzi che lavorano a tanti progetti,primo fra tutti un complesso sparatutto 3d basandosi su irrlicht con il mio aiuto!
    E forse stiamo pure per iniziare un platform
    Ciao, spero di aver svegliato almeno in te una vena creativa, chissà che pian piano non esca un bel videogioco!
    Ultima modifica di Eclipse; 22-03-2004 alle 21:48:28

  5. #20
    --]-[eLioS-- L'avatar di Squall L.
    Registrato il
    10-02
    Messaggi
    689
    Grazie mille x gli ottimi consigli! Quando avrò un attimo di tempo proverò.Comunque sono già iscritto al forum di PW con lo stesso Nick.
    ______The Truth is Out There______



  6. #21
    --]-[eLioS-- L'avatar di Squall L.
    Registrato il
    10-02
    Messaggi
    689
    #include <irrlicht.h>
    #include <wchar.h>
    #include <windows.h>

    using namespace irr;

    #pragma comment(lib, <Irrlicht.lib>)
    #include "eclipse.h"

    //==================================//
    //Globali
    IrrlichtDevice *device;
    scene::ISceneManager* smgr;
    video::IVideoDriver* driver;
    scene::ICameraSceneNode* camera=0;
    scene::IAnimatedMeshSceneNode* rigell=0;
    scene::IAnimatedMeshSceneNode* pg2=0;
    scene::IAnimatedMeshSceneNode* personaggio_selezionato=0;
    //==================================//

    //==================================//
    int main(){

    //funzioni "figlio" di Main
    void carica_mappa();
    void carica_modelli();
    void animazione_rigell(int n);


    //carica engine
    device = createDevice(video::EDT_OPENGL , core::dimension2d<s32>(750, 550),
    16, false, false, NULL);
    driver = device->getVideoDriver();
    PW_debug_driver(driver);
    smgr = device->getSceneManager();

    //decomprimi files
    device->getFileSystem()->addZipFileArchive("world.zip");
    device->getFileSystem()->addZipFileArchive("models.zip");

    //chiamata alla funzione carica_mappa
    carica_mappa();
    carica_modelli();
    personaggio_selezionato=rigell; //inizializzo il movimento a rigell
    //LOOP PRINCIPALE
    while(device->run()){
    driver->beginScene(true, true, video::SColor(255,90,90,156));
    //comandi tastiera
    //Comandi Rigell
    int anim=0;

    if (GetAsyncKeyState(VK_UP)) {PW_Muovi_Oggetto (personaggio_selezionato,6); anim=1;}
    if (GetAsyncKeyState(VK_DOWN)) {PW_Muovi_Oggetto (personaggio_selezionato,-6); anim=1;}
    if (GetAsyncKeyState(VK_LEFT)) {PW_Ruota_Oggetto_Y(personaggio_selezionato,-3); anim=1;}
    if (GetAsyncKeyState(VK_RIGHT)) {PW_Ruota_Oggetto_Y(personaggio_selezionato,3); anim=1;}
    if (GetAsyncKeyState(VK_SHIFT)) {PW_gestione_gravita(pg2,-2); anim=1;}
    if (GetAsyncKeyState(VK_CONTROL)) {PW_gestione_gravita(pg2,2); anim=1;}

    animazione_rigell(anim);

    if (GetAsyncKeyState(VK_F2)) personaggio_selezionato=rigell;
    if (GetAsyncKeyState(VK_F3)) personaggio_selezionato=pg2;

    //aggiusta camera
    PW_Lega_Camera_a_Oggetto(camera,personaggio_selezionato,10 0);
    core::vector3df camcord=camera->getPosition();
    camcord.Y+=60;
    camera->setPosition(camcord);

    PW_gestione_gravita(rigell, 4);
    PW_gestione_gravita(pg2, 0); //è una farfalla, vola + o -...

    smgr->drawAll();

    driver->endScene();
    }//fine loop

    device->drop();
    return 0;
    } //fine programma
    //==================================//

    //==================================//
    void carica_mappa(){
    //crea telecamera
    camera= smgr->addCameraSceneNode();

    //carica ambiente 3d
    scene::ISceneNode* mappa=PW_carica_mappa(smgr, "stadium.3ds");



    //luci speciali
    //rossa
    scene::IBillboardSceneNode * bill1 = smgr->addBillboardSceneNode();
    bill1->setMaterialType(video::EMT_TRANSPARENT_ADD_COLOR );
    bill1->setMaterialTexture(0, driver->getTexture("luce1.bmp"));
    bill1->setMaterialFlag(video::EMF_LIGHTING, false);
    bill1->setSize(core::dimension2d<f32>(20.0f, 20.0f));
    bill1->setPosition(core::vector3df (-1200,-100,400));
    smgr->addLightSceneNode(bill1, core::vector3df(0,0,0),
    video::SColorf(1.0f,0,0,1.0f),900.0f);

    //verde
    scene::IBillboardSceneNode * bill2 = smgr->addBillboardSceneNode();
    bill2->setMaterialType(video::EMT_TRANSPARENT_ADD_COLOR );
    bill2->setMaterialTexture(0, driver->getTexture("luce2.bmp"));
    bill2->setMaterialFlag(video::EMF_LIGHTING, false);
    bill2->setSize(core::dimension2d<f32>(20.0f, 20.0f));
    bill2->setPosition(core::vector3df (1200,-100,400));
    smgr->addLightSceneNode(bill2, core::vector3df(0,0,0),
    video::SColorf(0,1.0f,0,1.0f),900.0f);

    //blu
    scene::IBillboardSceneNode * bill3 = smgr->addBillboardSceneNode();
    bill3->setMaterialType(video::EMT_TRANSPARENT_ADD_COLOR );
    bill3->setMaterialTexture(0, driver->getTexture("luce3.bmp"));
    bill3->setMaterialFlag(video::EMF_LIGHTING, false);
    bill3->setSize(core::dimension2d<f32>(20.0f, 20.0f));
    bill3->setPosition(core::vector3df (0,-100,-400));
    smgr->addLightSceneNode(bill3, core::vector3df(0,0,0),
    video::SColorf(0,0,1.0f,1.0f),900.0f);

    //luce normale
    smgr->addLightSceneNode(NULL, core::vector3df(1200,-100,400), video::SColorf(1.0f,1.0f,1.0f,1.0f),6000.0f);

    }
    //==================================//

    //==================================//
    void carica_modelli(){
    //Rigell: personaggio principale
    rigell= smgr->addAnimatedMeshSceneNode(smgr->getMesh("rigell.ms3d"));
    rigell->setMaterialTexture(0, driver->getTexture("rigell.bmp"));
    PW_setta_animazione_ms3d(rigell,0,32,94);
    rigell->setAnimationSpeed(1000);
    rigell->setPosition(core::vector3df(0,0,100));
    rigell->setRotation(core::vector3df(0,270,0));
    PW_collisione(rigell);

    pg2= smgr->addAnimatedMeshSceneNode(smgr->getMesh("faerie.md2"));
    pg2->setMaterialTexture(0, driver->getTexture("faerie2.bmp"));
    PW_setta_animazione_ms3d(pg2,0,32,30);
    pg2->setAnimationSpeed(500);
    pg2->setPosition(core::vector3df(0,0,100));
    pg2->setRotation(core::vector3df(0,270,0));
    PW_collisione(pg2);
    }
    //==================================//

    //==================================//
    void animazione_rigell(int n){
    int static last=0;

    if (last!=n){ last=n;
    //fermo
    if (n==0)
    PW_setta_animazione_ms3d(rigell,0,32,94);
    rigell->setAnimationSpeed(600);
    //cammina
    if (n==1)
    PW_setta_animazione_ms3d(rigell,34,55,94);
    rigell->setAnimationSpeed(1000);

    }
    }//fine animazione
    //==================================//
    ______The Truth is Out There______



  7. #22
    --]-[eLioS-- L'avatar di Squall L.
    Registrato il
    10-02
    Messaggi
    689
    Il codice sopra postato è il mio Main.cpp. Come vedete il secondo personaggio (pg2) è una faerie (nel codice ho scritto farfalla, ma l'idea è quella ) per aggiungere il personaggio dovete avere nella cartella del vostro progetto i file faerie.md2 e faerie2.bmp oppure faerie5.bmp.
    I 3 files li torvate nella cartella media dell' Irrlicht. Se notat ho aggiunto al sistema di swich dei personaggi postato da Eclipse anche un'idea che mi è venuta in mente: visto che la faerie vola e che la posizione nell'asse Z dei personaggi è gestita (almeno in parte) dalla funzione "PW_gestione_gravita" ho associato una variazione della gravità ai tasti shift e ctrl che in pratica fanno rispettivamente alzare in volo la faerie e farla scendere.

    X eclipse: volevo postare questo anche su playerworld ma per adesso è down.
    Ultima modifica di Squall L.; 24-03-2004 alle 07:04:07
    ______The Truth is Out There______



  8. #23
    Bannato L'avatar di Eclipse
    Registrato il
    02-04
    Località
    C++atania
    Messaggi
    5.604
    Si, stiamo spostando i server... nella chat di www.playerworld.it oggi alle 22 abbiamo 1 software house professionale, non mancate!

  9. #24
    Bannato L'avatar di Eclipse
    Registrato il
    02-04
    Località
    C++atania
    Messaggi
    5.604
    Abbiamo problemi al server, infatti le immagini e i files della guida non sono disponibili al momento :/

  10. #25
    Utente L'avatar di Auron86
    Registrato il
    02-04
    Località
    Como
    Messaggi
    229
    Eclipse sei un grande, non sai consigliarmi una guida per cominciare a programmare in C++ da 0?

  11. #26
    Bannato L'avatar di Eclipse
    Registrato il
    02-04
    Località
    C++atania
    Messaggi
    5.604
    ne esistono davvero tante, cerca con www.google.it "guida c++"+"principianti" o "guida di base"+"c++"

  12. #27
    Utente L'avatar di Desuel
    Registrato il
    10-03
    Messaggi
    96
    Io ho scaricato irrlicht 0,6 perche il 0,5 non era disponibile,fa niente??
    Poi volevo sapere come posso fare per creare il mio personaggio giocante da zero o modificarne uno gia esistente.
    Comunque questa guida è veramente splendida e azzeccatissima per quello che voglio fare site grandi
    Ma se per programmare faccio copia e incolla da quello che avete scritto sul forum succede niente,non dovrebbe andare ugualmente non perche io ho fatto tutto pero quando premo f9 per compilare mi compaiono una 50 di errori del tipo loadbuild error e cose del genere a cosa puo essere dovuto piu omeno 8(
    Ultima modifica di Desuel; 1-04-2004 alle 19:08:26

  13. #28
    Bannato L'avatar di Eclipse
    Registrato il
    02-04
    Località
    C++atania
    Messaggi
    5.604
    Desuel

    Io ho scaricato irrlicht 0,6 perche il 0,5 non era disponibile,fa niente??
    Poi volevo sapere come posso fare per creare il mio personaggio giocante da zero o modificarne uno gia esistente.
    Comunque questa guida è veramente splendida e azzeccatissima per quello che voglio fare site grandi
    Ma se per programmare faccio copia e incolla da quello che avete scritto sul forum succede niente,non dovrebbe andare ugualmente non perche io ho fatto tutto pero quando premo f9 per compilare mi compaiono una 50 di errori del tipo loadbuild error e cose del genere a cosa puo essere dovuto piu omeno 8(
    scarica il codice dal link che ho messo alla fine invece di incollarlo dal forum, per gli errori invece scrivimene qualcuno e dimmi se sono errori di linking o di compilazione (nel primo caso vuol dire che hai sbagliato qualcosa nella configurazione del progetto, nel secondo invece c'è un errore di sintassi nel codice).

    Ho fatto anche 1 lezione su come modificare modelli con Milksape, ho avuto problemi con il mio server cmq la rimetterò online prestissimo.

  14. #29
    Cavaliere Templare L'avatar di SkulL iZa
    Registrato il
    06-03
    Messaggi
    235
    ehm... ho problemi quando inserisco il personaggio
    fino a li nessuno problema ma quando inserisco le linee

    void carica_modelli();
    carica_modelli();

    e il resto a fine file
    mi si crea un problema: rigell non è stato dichiarato...

    cmq è normale che ogni volta che sbaglio qualcosa mi evidenzi eclipse.h?

    thx
    SkulL iZa

    PC:
    AMD Athlon64 3200+ 2.0 GHz - 512 RAM DDR - HD 160 + 140 GB - Audio Integrated System - Radeon9800 128MB - Windows Vista Ultimate - Alice ADSL on NETGear DG834

    PC Sony VAIO serie CR:
    Intel Core 2 Duo T7100 1.8 GHz - 2024 RAM DDR2 - HD 120 GB -14" Screen size on Intel Graphic Media Accelerator X3100 - Windows Vista Home Premium - Alice ADSL on NETGear DG834

  15. #30
    Bannato L'avatar di Eclipse
    Registrato il
    02-04
    Località
    C++atania
    Messaggi
    5.604
    metti la riga

    scene::IAnimatedMeshSceneNode* rigell=0;

    su globali

    e scusa x il ritardo ma non posto + con la frequenza di un tempo

Pag 2 di 16 PrimoPrimo 1234512 ... UltimoUltimo

Regole di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •