Computer_Zone
Vuoi reagire a questo messaggio? Crea un account in pochi click o accedi per continuare.

CREARE IL PROPRIO VIDEOGAMES IN C#: UNDICESIMA PARTE

Andare in basso

CREARE IL PROPRIO VIDEOGAMES IN C#: UNDICESIMA PARTE Empty CREARE IL PROPRIO VIDEOGAMES IN C#: UNDICESIMA PARTE

Messaggio  Admin Mar Mag 12, 2009 4:04 pm

1) VEDIAMO ALCUNE CLASSI FONDAMENTALI DI XNA

Come abbiamo detto più volte, XNA non è altro che una serie enorme di classi, tutte dedicate allo sviluppo dei videogiochi.
Queste classi ci semplificheranno notevolmente il lavoro perché esse sono state programmate ad hoc per essere gestite nel modo più semplice possibile anche da chi, come noi, non ha una grande padronanza del linguaggio C#.
Vediamo ora alcune delle classi principalidi XNA.

I Vector2
posizione = new Vector2(0f, 0f);

La classe Vector2 non è altro che una coppia di valori di tipo float che identificano un punto sullo schermo.

Dunque con un Vector2 potremmo impostare la posizione di un oggetto bidimensionale, come un immagine, un testo o uno sprite animato, sul nostro monitor.
I due float identificano rispettivamente la X e la Y della posizione.

posizione1 = new Vector2(X, Y);

Se per esempio volessimo porre uno sprite (un oggetto 2D) al centro dello schermo, lavorando per esempio ad una risoluzione standard di 800x600, la sua posizione sarebbe X=400 e Y=300 e il Vector2 si dichiarerebbe così:

posizione1 = new Vector2(400, 300);

In questo modo avremo creato un nuovo oggetto Vector2 che, se assegnato come posizione al nostro sprite, lo visualizzerà al centro dello schermo.
Guardiamo un attimo questa immagine.


Supponendo sempre di lavorare con una risoluzione di 800x600. Noteremo che la posizione (0,0) sarà quella del punto in alto a sinistra mentre il punto (800,600) sarà quello in basso a destra.
Se volessimo per esempio che il nostro sprite si collocasse in alto a destra, potremmo impostare questo Vector2:

posizione1 = new Vector2(790, 10);

Ovvero, ponendo la X = 790 (dunque quasi al limite destro dello schermo) e la Y = 10 (ovvero appena sotto al bordo alto dello schermo).
Lo sprite si visualizzerebbe in questo punto:



A questo punto basterà modificare la X o la Y per vederlo muovere. Faremo tra poco, tutti gli esempi del caso.



I Vector3
posizione = new Vector3(0f, 0f, 0f);

La classe Vector3 non è altro che l'insieme di tre variabili di tipo float che identificano una posizione nello spazio tridimensionale, è in pratica un punto nello spazio 3D.
E' concettualmente come un Vector2 ma con una variabile di tipo float in più che identifica la coordinata Z.
Ogni oggetto possiede una posizione nello spazio identificabile tramite le tre coordinate che regolano un mondo tridimenzionale: X,Y, Z.



posizione1 = new Vector3(X, Y, Z);

Nel caso delle coordinate 3D, il punto 0,0,0 corrisponde al punto che nell'immagine qui sopra si trova all'incrocio degli assi.
Se non dovessimo specificare diversamente, ogni oggetto o telecamera inserita nel nostro mondo, si troverà nel punto 0,0,0.
Si intuisce che, se volessimo per esempio muovere un oggetto verso "avanti" dovremmo allontanarla dal nostro punto di vista, cioè, dovremmo diminuire la variabile float Z. Oppure, potremmo muovere il nostro punto di vista tirandolo indietro, allontanandolo la telecamera dall'oggetto, facendo aumentare la variabile float Z.
Se volessimo invece spostare l'oggetto verso l'alto non dovremmo far altro che aumentare la variabile float Y dell'oggetto. Lo stesso ragionamento si farà per spostare a destra/sinistra l'oggetto, dovremmo lavorare cioè sulla variabile float X. Tra poco vedremo come.




Matrix
Le matrici, saranno indispensabili per effettuare trasformazioni di ogni tipo sui modelli 3D o sulla telecamera.
Serviranno per esempio per assegnare una posizione (il Vector3 appena visto) ad un oggetto.
Per trasformazioni si intendono, lo spostamento (CreateTraslation) , la scala (CreateScale), le rotazioni e molte altre.
Ma non dobbiamo allarmarci, XNA mette ci mette a disposizione una notevole quantità di matrici pronte all'uso, in modo semplice ed intuitivo.



Infatti basterà digitare il punto dopo la parola Matrix e vedremo apparire una lunga lista di possibili matrici da utilizzare.

Da tenere conto che ogni tipo di trasformazione ha la sua sintassi, per esempio, prendendo in prestito il Vector3 di cui parlavamo prima, potremmo spostare il nostro modello 3D nel punto posizione1, utilizzando questa sintassi:

matrice = Matrix.CreateTranslation(posizione1);

Dove posizione1 è il Vector3 che avevamo impostato prima.
Anticipiamo che, una volta assegnata questa matrice ad un oggetto, basterà cambiare i float del Vector3 per vederlo muoversi in tempo reale.
Se per esempio volessimo farlo andare in avanti, cioè allonarlo dalla vista del giocatore, lavoreremo sulla coordinata Z dell'oggetto. Tra poco faremo le nostre prove.



Model

myModel = Content.Load<Model>("Cartella/mio_modello");

Model, come si intuisce dal nome, identifica un modello 3D e questa riga, inserita nel metodo LoadContent() che come abbiamo detto serve a caricare tutti i nostri files, sarà sufficiente per caricare nel nostro gioco il modello che, in questo caso, si chiama mio_modello.X.
Si può notare che il percorso e il nome del file è scritto come stringa (dunque tra le virgolette) e che nel nome del file non abbiamo specificato l'estensione perché, importandolo, XNA riuscirà a riconoscerlo, processandolo nel modo corretto. Basterà dunque importarlo nella nostra soluzione ed esso sarà pronto per l'uso, senza dovere fare altro.




Testxture2D

sfondo1 = Content.Load<Texture2D>("Cartella/mia_immagine");

Texture2D identifica un'immagine. Molti di voi sarpranno già che per "texture" si intendono le immagini che vengono "attaccate" ai modelli per dare la sensazione di materiali particolari o disegni particolari sugli oggetti 3D.
Nel nostro caso per Texture2D intenderemo qualsiasi immagine a due dimensioni, che sia una foto, che sia un'ummagine di sfondo o un personaggio a due dimensioni.
Come per Model, la riga scritta sopra servirà per caricare il file nel nostro gioco e verrà scritta nel metodo LoadContent(). Anche in questo caso non servirà specificare l'estensione del file perchè XNA riconoscerà il tipo di file e, che sia .jpg, .bmp o altro formato grafico, esso verrà processato nel modo adeguato, senza dovere fare altro.


Per ora queste cinque semplici classi saranno sufficienti per fare i nostri primi esperimenti. In seguito ne vedremo altre.
Admin
Admin
Admin

Messaggi : 17
Data di iscrizione : 14.02.09
Età : 32
Località : Vicenza

https://computerzone.elencoforum.com

Torna in alto Andare in basso

Torna in alto

- Argomenti simili

 
Permessi in questa sezione del forum:
Non puoi rispondere agli argomenti in questo forum.