Ich habe sie hier reigestellt, weil ich schon off hier im Forumfragen dazu hatte.
- Zoomen von einem Sprite3D
- Rotate von einem Sprite3D auch mit unterschiedlichen Seitenlängen
- Verschieben des Rotationspunktes (ausgehend von der Mitte)
- Anzeigen von einem Sprite3D
- Transparenz des Sprite3D
Code: Alles auswählen
; Zoom und Rotate und Display von einem Sprite3D
; ----------------------------------------------
; Sprite - Nummer des Anzuzeigenen Sprite
; x - X-Positon des Mittelpunks bzw. Rotationspunkts vom Sprite
; y - Y-Positon des Mittelpunks bzw. Rotationspunkts vom Sprite
; xx - Breite des Sprite
; yy - Höhe des Sprite
; w - Rotationswinkel des Sprite (in Grad, wobei 0° Richtung Osten ist)
; dx - Verschiebt den Mittelpunkt und damit auch den Rotationspunkt
; auf dem Sprite in X-Richtung
; dy - Verschiebt den Mittelpunkt und damit auch den Rotationspunkt
; auf dem Sprite in Y-Richtung
; h - Transparenz des Sprite (0 Transparent, 255 voll sichtbar)
Procedure DisplayZoomRotateSprite3D(Sprite, x, y, xx, yy, w.f, dx, dy, h)
w = w * (#PI/180)
r.f = Sqr(Pow(xx,2)+Pow(yy,2))/2
t.f = ATan(xx/yy)
w1.f = w - t : w2.f = w + t : w3.f = w + #PI - t : w4.f = w + #PI + t
TransformSprite3D(Sprite, Cos(w1)*r, Sin(w1)*r, Cos(w2)*r, Sin(w2)*r, Cos(w3)*r, Sin(w3)*r, Cos(w4)*r, Sin(w4)*r)
DisplaySprite3D(Sprite, x-Cos(w)*dy+Sin(w)*dx, y-Sin(w)*dy-Cos(w)*dx, h)
EndProcedure
