Die Spritecolli ist grottenschlecht, oder mach ich einen Fehler ?
Ich habe ein Sprite 64x64(Raupenfahrzeig) und ein Sprite 500x500(Grundfläche mit Umrandung).
Bei beiden ist die Farbe 255,0,255 durchsichtig.
4-5 Pixel vor der Collision wird schon eine Colli angezeigt.
Wenn ich mit dem Fahrzeugkörper ausserhalb der Berührung bin und dann drehe und der Kettenantrieb kommt in die Berührungsfläche , wird erst nach 5-6 Punkten in der Fläche eine Colli angezeigt.
Was ist da falsch ?
Vielleicht kann ich einem Mal die Sprite schicken zum Testen?
Gruss
Code: Alles auswählen
Global x1.f,y1.f,dx.f,dy.f,winkel.f, r.l,delta.l,colli.l
Enumeration
#Window_0
#sprite_0
#sprite_1
EndEnumeration
InitSprite()
OpenWindow(#Window_0, 0, 0, 800, 700, "Screen", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
OpenWindowedScreen(WindowID(#Window_0), 150, 10, 600,600, 0, 0, 0)
LoadSprite(#sprite_0, "raupe.bmp", #PB_Sprite_PixelCollision)
LoadSprite(#sprite_1, "grundspr.bmp", #PB_Sprite_PixelCollision)
TransparentSpriteColor(#sprite_0, RGB(255,0,255))
TransparentSpriteColor(#sprite_1, RGB(255,0,255))
dx=100
dy=100
delta=2
Repeat
Event = WaitWindowEvent(1)
Select Event
Case #PB_Event_Gadget
EventGadget = EventGadget()
Case #PB_Event_CloseWindow
EventWindow = EventWindow()
If EventWindow = #Window_0
CloseWindow(#Window_0)
Break
EndIf
EndSelect
If GetAsyncKeyState_(#VK_RIGHT)
winkel=winkel+2
ElseIf GetAsyncKeyState_(#VK_LEFT)
winkel=winkel-2
EndIf
If GetAsyncKeyState_(#VK_UP)
y1=Sin(winkel/180*#PI)*delta
x1=Cos(winkel/180*#PI)*delta
dx+x1
dy+y1
ElseIf GetAsyncKeyState_(#VK_DOWN)
y1=Sin(winkel/180*#PI)*delta
x1=Cos(winkel/180*#PI)*delta
dx-x1
dy-y1
EndIf
ClearScreen(RGB(255,255,0))
DisplayTransparentSprite(#sprite_1,10,10)
DisplayTransparentSprite(#sprite_0,dx,dy)
RotateSprite(#sprite_0,winkel+90,#PB_Absolute)
colli = SpritePixelCollision(#Sprite_0, dx,dy, #Sprite_1,10,10)
FlipBuffers()
Debug colli
ForEver