3rd person, telecamere, collisioni & eventi da tastiera (5)

Attenzione: il tutorial pubblicato sul sito è stato suddiviso in 5 parti. Linee di codice troppo lunghe potrebbero essere tagliate dal browser. Per la completezza e l'affidabilità del codice fate riferimento al tutorial completo in pdf.

scarica il seguente tutorial in formato pdf (161 kb)

scarica il codice completo in formato testo (.cpp, 10.6 Kb)

 

CONCLUSIONI

Spero di essere riuscito a mostrare con semplicità e “senza andare sul difficile” come poter implementare un buon numero di “features” adatte per sviluppare un gioco in 3rd person… naturalmente per un grosso/medio progetto l’ideale è creare un progetto non-monolitico come questo esempio. E magari codare ed indentare un po’ meglio (compresa qualche GROSSA ottimizzazione qua e là) non sarebbe male :D .

Spero inoltre che i C++ssari più incalliti non si rattristino troppo per il mio codice… fosse stato Object Pascal, C# o qualunque altra cosa sul generis forse avrei fatto un lavoro più pulito…

RINGRAZIAMENTI

Questo è il mio primo tutorial (in generale, non solo di Irrlicht). Se sono riuscito (e se sono stato invogliato) lo devo a IrrlichtItalia nella sua interezza e in particolare a: webmaster,cadue, white tiger,bellaz89 e a tutti quelli che sono stati (e spero saranno) molto pazienti con me.

E un grazie anche a tutti voi che, per un motivo o per l’altro, state leggendo.

Baci & Abbracci

Hammeronthenet


18 commenti per “3rd person, telecamere, collisioni & eventi da tastiera (5)”

  1. Michele ha scritto:

    azz… ho provato a compilare il tutto (dalla guida in pdf) e mi da due errori :(
    su:
    virtual bool OnEvent(SEvent event) = 0;
    e
    MyEventReceiver receiver;

  2. hammeronthenet ha scritto:

    x Michele: guardati il forum, è cambiata la classe per gestire gli input da tastiera in Irrlicht… Paolino, nn dovevi mettere una nota all’epoca??? :D

  3. paooolino ha scritto:

    esatto, guarda questa discussione
    http://paooolino.altervista.org/forumirrlicht/viewtopic.php?t=333

    ciao!

  4. Michele ha scritto:

    Grazie!!!
    hammeronthenet puoi passarmi il tuo contatto caso mai mi servisse una mano?

  5. Michele ha scritto:

    Comunque… ho letto e nn ho risolto :(

  6. paooolino ha scritto:

    hai scritto

    virtual bool OnEvent(SEvent event)

    invece di

    virtual bool OnEvent(SEvent &event) ?

    che errore ti da? lo stesso di prima? che modifiche hai fatto? per poterti aiutare devi essere piu’ preciso.

  7. hammeronthenet ha scritto:

    Il mio contatto (e-mail) è scritto nella prima pagina del tutorial.
    Puoi sentirmi lì.
    Ciao.

  8. Michele ha scritto:

    grazie

  9. peppmost ha scritto:

    Salve
    Innanzitutto complimenti per il tutorial, davvero fatt bene.
    L’unica cosa che ti chiedo è se si puo’ pubblicare il file con il codice funzionante…
    cioè proprio il main, dato che per qualche oscura ragione foxit reader nn mi permette di copiare in modalità “visualizza testo”.
    Grazie

  10. paooolino ha scritto:

    @peppmost

    ho contattato l’autore del tutorial,
    pubblichero’ al più presto il codice completo in formato testo :)
    a presto!

  11. peppmost ha scritto:

    grazie mille:D

  12. paooolino ha scritto:

    codice pubblicato!

    http://irrlichtitalia.altervista.org/tutorials/hammeronthenet/code.cpp

  13. peppmost ha scritto:

    grazie per la prontezza:D
    cmq mi da errore:
    K:\Dev-Cpp\3dgames\da sito\Makefile.win [Build Error] [sito.exe] Error 1

    cmq l’avevo gia’ riscritto tutto a mano…
    una cosa sola è strana: impostando la velocità di movimento a 2.3f(come da voi consigliato) sul mio computer fa 100 metri in 0,2 secondi…un record:D mettendola a 0.1 va meglio ma sugli altri computer fa 1 metro in 100 secondi… secondo voi dipende dalla velocità di calcolo del pc? io avevo pensato che forse ci vorrebbe un timer per il movimento per ovviare al problema. Premetto che sono del tutto nuovo all’argomento videogames(ho iniziato ieri)
    Grazie

  14. paooolino ha scritto:

    uhm.. magari non c’entra niente, ma credo che al makefile non piaccia molto il fatto che il path contenga uno spazio (\da_sito\) prova a toglierlo. Per quanto riguarda velocità, il valore ottimo varia da caso a caso, come anche non esiste una unità di misura fissa; nel 3D si parla di “unità” per misurare lo spazio, poi tu decidi se una unità è un metro, o un centimetro. La velocità di calcolo del pc può influire in questo, prova a cercare nel forum “ciclo di compensazione” per saperne di più.

  15. Marco ha scritto:

    Scusate se arrivo così tardi…ma almeno ho il vantaggio di aver letto tutti i post scritti finora,forum incluso :) Purtroppo però,sia che usi Dev-Cpp o VC++ 6.0, il codice viene compilato,linkato,il prog parte e…la memoria non poteva essere “read”!il messaggio completo è:
    “L’istruzione a “0×0040130c” ha fatto riferimento alla memoria a “0×00000000″.La memoria non poteva essere “read”".
    Questo è quanto.L’errore si ripete in maniera del tutto identica con VC++ 6.0.
    Vi sarei grato se riuscissi ad avere delucidazioni a riguardo.

  16. Marco ha scritto:

    Ovviamente dopo tre giorni di follia,di prove e di modifiche al codice,ma soprattutto dopo essermi deciso a postare sul forum, ecco che come per magia il programma inizia a funzionare.Nessun buffer overflow nelle chiamate alle funzioni,nessun errore nella gestione degli indirizzi di memoria e nessun altro dei “fondati” sospetti che mi erano venuti in mente in questi giorni ha trovato riscontro,bensì un semplice settaggio dei parametri di progetto e della posizione di quest’ultimo nelle cartelle di irrlicht…o almeno penso,visto che ho smanettato così tanto che non vorrei aver toccato qualcosa e non ricordarmi neanche…
    Cmq l’ho fatto fungere con il VC++ 6.0,chiunque dovesse avere problemi con questo ambiente può postare qui e se posso sarò di aiuto.
    Grazie cmq e…hammeronthenet ti voglio bene per il tutoria :)

  17. Pione ha scritto:

    Io non ho avuto difficoltà a compilare, mi potete spiegare perché per il salto non si usa la bellissima funzione jump() integrata in irrlicht???

  18. paooolino ha scritto:

    semplicemente perchè quando è stato scritto l’articolo quella funzione non esisteva!

Lascia un commento