1.3 Moving, spinning and scaling

Vi vill såklart enkelt kunna röra på vårt nya objekt utifrån vår klass, så nu tänkte jag visa hur vi roterar på vår coola ... 3dkryss?

Gå in på cls3DAxis.cs och lägg till en global Matrix som är public, så att vi kommer åt den från game1 initiera den till Identity... jag tror att det är ett slags nullvärde eller nått default liknande:

public Matrix worldMatrix = Matrix.Identity;

sedan scrollar vi ner till drawfunktionen där objektet ritas ut och skriver:

effect.World = worldMatrix;

World metoden i effect beskriver hur objektet ska bete sig i 3d världen. Men den så kan vi ändra storlek
rotation och position på objektet. Så det vi gör med vår globala worldMatrix kommer att gå in i vår effect som sedan kommer att rita ut vårt fina 3d kryss. Gå nu till Game1.cs. Om ni minns tidigare så nämnde jag att Update metoden loopar under hela spelets gång. Så därför manipulerar vi vår worldMatrix i denna metod.. du kan ta bort den där if(gamepad grejen... den är till för att avsluta spelet om man spelar på xbox:

protected override void Update(GameTime gameTime)
{
min3dAxel.worldMatrix *= Matrix.CreateRotationY(0.01f);

base.Update(gameTime);
}

Nu ändrar vi vår worldMatrix i objektet och gör en rotation på Y axeln.. den ska snurra 0.01 grader per loop. Denna Updatemetod loopas ganska fort så 0.01 räcker.

Dra en F5 ;)

Vi pillar lite till för skoj skull och skriver till:

min3dAxel.worldMatrix *= Matrix.CreateTranslation(new Vector3(0, 0.05f ,0));
Dra en F5 så ser du vad CreateTranslation gör ;) Ta bort den raden och skriv:

min3dAxel.worldMatrix = Matrix.CreateScale(0.10f);
Dra en F5 så ser du vad CreateScale gör!

effect.World är alltså hur vårt objekt ska bete sig i vår 3dVärld.

Kommentarer

Kommentera inlägget här:

Namn:
Kom ihåg mig?

E-postadress: (publiceras ej)

URL/Bloggadress:

Kommentar:

Trackback
RSS 2.0