Author Topic: Rotosprite mit Pixelgenauer collision....geht nicht? Ich sage DOCH!  (Read 2083 times)

Offline Schranz0r

  • Premium User :)
  • Administrator
  • Prof. Inline
  • *******
  • Posts: 5024
  • O Rly?
    • View Profile
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 1700 @3.9GHz, 16GB HyperX Fury 3000MHz Ram, ASUS ROG GTX 1060 STRIX 6GB, Windows 10 Pro 64Bit, MSi Tomahawk B350 Mainboard