24-01-2012, 06:16 PM
(Questo messaggio è stato modificato l'ultima volta il: 26-01-2012, 12:12 AM da federico.)
Ho trovato un bella serie di tutorial sul sito App Hub, ed ho pensato di tradurvela... Qui potrete scaricare il progetto completo con tutta la grafica di cui necessiteremo...
CREAZIONE DEL PERSONAGGIO
Abbiamo un progetto vuoto, con tanto di risorse grafiche a portata di mano. Qual'è la prima cosa da fare? Stampare a schermo un personaggio. Possiamo costruire tutto da lì.
Di solito, i giochi rappresentano un particolare tipo di oggetto, come un personaggio, con una classe; un gruppo di codice al quale si fa riferimento in modo uniforme, che può essere passato di funzione in funzione in una singola unità. Andiamo ora a crearne uno.
Aggiungi una nuova classe al tuo progetto premendo SHIFT + ALT + C, chiamandola Player.cs. Premi ora INVIO.
Si aprirà un nuovo file dove inserire il codice. Questo file conterrà tutto il codice che noi vorremo scrivere per definire la classe Player; tutti i dati e le funzioni che descrivono cos'è "Player" per il nostro gioco. Inizieremo con i valori fondamentali, come la posizione, ed aggiungeremo alcune funzioni che potremo richiamare continuamente per stampare il giocatore a schermo e, in seguito, farlo muovere in giro.
Dentro Player.cs
Guarda le prime righe del nuovo file. E' stato già scritto un po' di codice per te. Dovrai ora apportarvi qualche modifica. Inserite il codice che segue, comprese le dichiarazioni con "using", adesso il tuo codice dovrebbe assomigliare a questo:
using System;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;
namespace Shooter
{
class Player
{
public void Initialize()
{
}
public void Update()
{
}
public void Draw()
{
}
}
}
Questi tre elementi fra le parentesi graffe, Initialize(), Update(), e Draw() sono metodi, noti anche come funzioni. Un metodo è un gruppo di istruzioni che, quando richiamato da un'altro metodo, esegue le sue istruzioni dall'alto verso il basso. Le istruzioni che il metodo eseguirà andranno sempre messe fra le parentesi graffe.
Abbiamo bisogno di aggiungere una varietà di dati che andrà ad occuparsi del nostro personaggio. Come ad esempio la posizione dei vari elementi nello schermo, qual'è la loro grafica e via dicendo.
Andate subito dopo la prima parentesi graffa nella classe Player ed aggiungete le seguenti righe di codice:
//L'animazione che rappresenta il personaggio
public Texture2D PlayerTexture;
// La posizione del personaggio
public Vector2 Position;
// Lo stato del personaggio
public bool Active;
// I punti vita che il giocatore ha
public int Health;
// La larghezza della nave
public int Width
{
get { return PlayerTexture.Width; }
}
// L'altezza della nave
public int Height
{
get { return PlayerTexture.Height; }
}
I valori che hanno i metodi get e set come sopra sono chiamati proprietà, e sono un modo per controllare il cambiamento e l'accesso delle variabili.
Ci sono un certo numero di tipi di variabili che stiamo usando al momento, tu ne vedrai alcuni:
int: un valore intero, che può essere, ad esempio, 1, 2, 78...
bool: un valore booleano, che può essere vero o falso...
Vector2: un vettore bi-dimensionale, che ha un valore X ed uno Y che possono essere impostati in modo indipendente l'uno dall'altra...
Texture2D: grafica bi-dimensionale, è uno speciale tipo di dato che può caricare i dati grafici e che può essere stampato a schermo...
Questi tipi di dati lavoreranno insieme per stampare a schermo il nostro personaggio. Quando lo stamperemo a schermo, verrà stampata una Texture2D in una posizione Vector2. Useremo diverse combinazioni di dati per controllare ad esempio quanta vita il nostro giocatore ha, determinare quando gli oggetti entrano in collisione e per riprodurre l'audio. Per ora abbiamo bisogno soltanto di stampare a schermo il nostro personaggio.
Quello di cui abbiamo bisogno è di creare un metodo che imposti la posizione del nostro personaggio e la grafica iniziale con le giuste impostazioni. Imposteremo qualche altro valore che utilizzeremo in seguito. Il metodo Initialize nella classe Player funzionerà meglio. Abbiamo soltanto bisogno di modificarlo un po'.
Dobbiamo aggiungere il seguente codice al metodo Initialize:
public void Initialize(Texture2D texture, Vector2 position)
{
PlayerTexture = texture;
// Set the starting position of the player around the middle of the screen and to the back
Position = position;
// Set the player to be active
Active = true;
// Set the player health
Health = 100;
}
In aggiornamento...
CREAZIONE DEL PERSONAGGIO
Abbiamo un progetto vuoto, con tanto di risorse grafiche a portata di mano. Qual'è la prima cosa da fare? Stampare a schermo un personaggio. Possiamo costruire tutto da lì.
Di solito, i giochi rappresentano un particolare tipo di oggetto, come un personaggio, con una classe; un gruppo di codice al quale si fa riferimento in modo uniforme, che può essere passato di funzione in funzione in una singola unità. Andiamo ora a crearne uno.
Aggiungi una nuova classe al tuo progetto premendo SHIFT + ALT + C, chiamandola Player.cs. Premi ora INVIO.
Si aprirà un nuovo file dove inserire il codice. Questo file conterrà tutto il codice che noi vorremo scrivere per definire la classe Player; tutti i dati e le funzioni che descrivono cos'è "Player" per il nostro gioco. Inizieremo con i valori fondamentali, come la posizione, ed aggiungeremo alcune funzioni che potremo richiamare continuamente per stampare il giocatore a schermo e, in seguito, farlo muovere in giro.
Dentro Player.cs
Guarda le prime righe del nuovo file. E' stato già scritto un po' di codice per te. Dovrai ora apportarvi qualche modifica. Inserite il codice che segue, comprese le dichiarazioni con "using", adesso il tuo codice dovrebbe assomigliare a questo:
using System;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;
namespace Shooter
{
class Player
{
public void Initialize()
{
}
public void Update()
{
}
public void Draw()
{
}
}
}
Questi tre elementi fra le parentesi graffe, Initialize(), Update(), e Draw() sono metodi, noti anche come funzioni. Un metodo è un gruppo di istruzioni che, quando richiamato da un'altro metodo, esegue le sue istruzioni dall'alto verso il basso. Le istruzioni che il metodo eseguirà andranno sempre messe fra le parentesi graffe.
Abbiamo bisogno di aggiungere una varietà di dati che andrà ad occuparsi del nostro personaggio. Come ad esempio la posizione dei vari elementi nello schermo, qual'è la loro grafica e via dicendo.
Andate subito dopo la prima parentesi graffa nella classe Player ed aggiungete le seguenti righe di codice:
//L'animazione che rappresenta il personaggio
public Texture2D PlayerTexture;
// La posizione del personaggio
public Vector2 Position;
// Lo stato del personaggio
public bool Active;
// I punti vita che il giocatore ha
public int Health;
// La larghezza della nave
public int Width
{
get { return PlayerTexture.Width; }
}
// L'altezza della nave
public int Height
{
get { return PlayerTexture.Height; }
}
I valori che hanno i metodi get e set come sopra sono chiamati proprietà, e sono un modo per controllare il cambiamento e l'accesso delle variabili.
Ci sono un certo numero di tipi di variabili che stiamo usando al momento, tu ne vedrai alcuni:
int: un valore intero, che può essere, ad esempio, 1, 2, 78...
bool: un valore booleano, che può essere vero o falso...
Vector2: un vettore bi-dimensionale, che ha un valore X ed uno Y che possono essere impostati in modo indipendente l'uno dall'altra...
Texture2D: grafica bi-dimensionale, è uno speciale tipo di dato che può caricare i dati grafici e che può essere stampato a schermo...
Questi tipi di dati lavoreranno insieme per stampare a schermo il nostro personaggio. Quando lo stamperemo a schermo, verrà stampata una Texture2D in una posizione Vector2. Useremo diverse combinazioni di dati per controllare ad esempio quanta vita il nostro giocatore ha, determinare quando gli oggetti entrano in collisione e per riprodurre l'audio. Per ora abbiamo bisogno soltanto di stampare a schermo il nostro personaggio.
Quello di cui abbiamo bisogno è di creare un metodo che imposti la posizione del nostro personaggio e la grafica iniziale con le giuste impostazioni. Imposteremo qualche altro valore che utilizzeremo in seguito. Il metodo Initialize nella classe Player funzionerà meglio. Abbiamo soltanto bisogno di modificarlo un po'.
Dobbiamo aggiungere il seguente codice al metodo Initialize:
public void Initialize(Texture2D texture, Vector2 position)
{
PlayerTexture = texture;
// Set the starting position of the player around the middle of the screen and to the back
Position = position;
// Set the player to be active
Active = true;
// Set the player health
Health = 100;
}
In aggiornamento...