www.jammni.de

Logo - Kleiner Drache
Login
Username:

Passwort:

Daten merken
Auto-Login
Registrieren
 
Online
niemand
 
Forumsuche
Suche nach:

Logo - DracheDirectX-Forum

Luddi

Gepostet:
04.04.2009 22:34

Sprites transformieren  
Hallo zusammen, scheint als ob ich hier Hilfe finden könnte :)
Vorab: Ich benutze MS Visual C++ und das DirectX SDK Juni 2007 (und bin blutiger Noob^^)
Ich versuche im Moment ein 2d Game zu erstellen(, bei dem bisher noch nicht so viel passiert).
Ich möchte, dass sich ein Sprite (ein Typ, von dem man von oben herab sieht) sich mit dem Mauszeiger dreht.
Also, wenn der Mauszeiger am rechten, oberen Rand ist, dass der Typ nach oben rechts guckt, wovon ich aber noch weit entfernt bin.
Ich scheitere schon dabei, den Sprite an sich zu drehen.
Wenn ich es per D3DXMATRIX versuche dreht sich nicht nur der eine Sprite, sondern alle Sprites, und das um den Centerpunkt.
Dies geschieht allerdings auch mit den Sprites, die vor der Deklaration und Bekanntmachung...

D3DXMATRIX matRotateZ;
D3DXMatrixRotationZ(&matRotateZ, D3DXToRadian(30.0f)); //beispielsweise
d3ddev->SetTransform(D3DTS_WORLD, &matRotateZ);

...gedrawt wurden.
Ich hab auch schon versucht diese Drehung bekannt zugeben, den zu drehenden Sprite zu drawn und anschließend die Rotation wieder auf "0" zu setzen, was aber keinen Erfolg zeigte, da sich dann garnichts drehte :( .

Jetzt hoffe ich hier Hilfe zu finden und danke schoeinmal für potentielle Antworten Smilie
Zum Seitenanfang ICQ    
 
Luddi

Gepostet:
13.04.2009 16:41

   
Ich konnte das Problem nun selber lösen.


// Texture being used is 70 by 70:
D3DXVECTOR2 spriteCentre=D3DXVECTOR2(35.0f,35.0f);

// Screen position of the sprite
D3DXVECTOR2 trans=D3DXVECTOR2(shipx,shipy);

// Rotate based on the position of the mouse
float rotation=atan2(currentYMouse - shipy, currentXMouse - shipx); //CalcDegree(xMouse, yMouse) D3DXToRadian() atan2(currentYMouse, currentXMouse)

// Build our matrix to rotate, scale and position our sprite
D3DXMATRIX mat;

// out, scaling centre, scaling rotation, scaling, rotation centre, rotation, translation
D3DXMatrixTransformation2D(&mat,NULL,0.0,NULL,&spriteCentre,rotation,&trans);

// Tell the sprite about the matrix
d3dspt->SetTransform(&mat);

// Draw the sprite left, top, right, bottom
SetRect(&Part, 0, 0, 70, 70); //|0|//lol//|0|//
d3dspt->Draw(TypTexture,&Part,NULL,NULL,0xFFFFFFFF);



shipx und shipy sind die punkte um die sich das sprite drehen soll und auf denen das Sprite platziert ist.


Danke, dass niemand antwortet XD
Zum Seitenanfang ICQ