Rotosprite mit Pixelgenauer collision....geht nicht? Ich sage DOCH!

Previous topic - Next topic

Schranz0r

Vor der Hautschleife aufrufen!
num  = das Sprite was gedreht werden soll
drehungs_step = nächste drehung in Grad
Start_num ab wo die Sprites gespeichert werden.

Code (glbasic) Select
FUNCTION ROTOCOPY: num, drehungs_step, start_num

GLOBAL Winkel
LOCAL XX, YY, Spitzenmass

GETSPRITESIZE num, XX, YY

Spitzenmass = SQR( POW(XX,2) + POW(YY,2) )



FOR Winkel = 0 TO 359 STEP drehungs_step

FILLRECT 0,0,Spitzenmass,Spitzenmass, RGB(0xff, 0x00, 0x80)
ROTOSPRITE num,(Spitzenmass-XX)/2, (Spitzenmass-YY)/2, Winkel

GRABSPRITE start_num + Winkel / drehungs_step, 0, 0, Spitzenmass, Spitzenmass
BLACKSCREEN
NEXT

ENDFUNCTION
Ist zu behandeln wie SPRITE nur das es auf den Mittelpunkt bezogen ist!

Code (glbasic) Select
FUNCTION Sprite_Mid: num, X, Y
LOCAL XX, YY
GETSPRITESIZE num , XX, YY

SPRITE num, X-XX/2, Y-YY/2

ENDFUNCTION
Überprüft auf Collision(Pixelgenau)
ein normales Sprite mit einem "ROTOSPRITE"

num1 = Normales Sprite

mid_num2 = Das "ROTOSPRITE"

Code (glbasic) Select
FUNCTION Sprcoll_mid: num1, x1, y1, mid_num2, x2, y2

LOCAL XX, YY

GETSPRITESIZE mid_num2, XX, YY

IF SPRCOLL(num1, x1, y1, mid_num2, x2-XX/2, y2-XX/2)
RETURN 1
ENDIF
ENDFUNCTION
I <3 DGArray's :D

PC:
AMD Ryzen 7 3800X 16@4.5GHz, 16GB Corsair Vengeance LPX DDR4-3200 RAM, ASUS Dual GeForce RTX™ 3060 OC Edition 12GB GDDR6, Windows 11 Pro 64Bit, MSi Tomahawk B350 Mainboard