Jup, vielen dank für die Sprite-Hilfe.
Jetzt komme ich wieder ein Stück weiter.
Kann ich jetzt wunderbar ausbauen mit allen Tricks.
Code: Alles auswählen
Global x1.f,y1.f,dx.f,dy.f,winkel.f,colli.l
Procedure sprite_grab()
DisplaySprite( 3,0,0)
Start3D()
RotateSprite3D(0,winkel,0)
DisplaySprite3D(0, 20,20,255)
Stop3D()
GrabSprite( 2, 0, 0, 104,104,0)
EndProcedure
InitSprite()
InitSprite3D()
OpenWindow(0,0,0,800,600,"sprites!",#PB_Window_SystemMenu|#PB_Window_SizeGadget|#PB_Window_ScreenCentered)
OpenWindowedScreen(WindowID(0),10,10,500,500,0,0,0)
CreateSprite(0,64,64,#PB_Sprite_Texture)
CreateSprite3D(0, 0)
StartDrawing(SpriteOutput(0))
Box(0,0,64,64,RGB(255,0,0))
StopDrawing()
CreateSprite(1,64,64,#PB_Sprite_Texture)
StartDrawing(SpriteOutput(1))
Circle(32,32,30,RGB(0,0,255))
StopDrawing()
CreateSprite(3,104,104,#PB_Sprite_Texture)
StartDrawing(SpriteOutput(3))
Box(0,0,104,104,RGB(0,0,0))
StopDrawing()
dx=100
dy=100
ClearScreen(RGB(255,255,0))
sprite_grab()
DisplaySprite( 2, dx,dy)
OpenConsole()
Repeat
Event.l = WindowEvent()
If GetAsyncKeyState_(#VK_Z)
winkel=winkel+1
sprite_grab()
ElseIf GetAsyncKeyState_(#VK_R)
winkel=winkel-1
sprite_grab()
EndIf
If GetAsyncKeyState_(#VK_T)
y1=Sin(winkel/180*#PI)*1
x1=Cos(winkel/180*#PI)*1
dx+x1
dy+y1
ElseIf GetAsyncKeyState_(#VK_G)
y1=Sin(winkel/180*#PI)*1
x1=Cos(winkel/180*#PI)*1
dx-x1
dy-y1
EndIf
DisplayTransparentSprite( 2, dx,dy)
ClearScreen(RGB(255,255,0))
DisplayTransparentSprite( 1, 200,200)
Start3D()
DisplaySprite3D(0, dx+20,dy+20,55)
Stop3D()
colli=SpritePixelCollision(2,dx,dy, 1,200,200)
If colli=1
PrintN(Str(colli))
Else
PrintN(Str(colli))
EndIf
FlipBuffers()
Until Event = #PB_Event_CloseWindow
End