Es ist ein Testprogramm.
Möchte 3dSprite rotieren und dann für die kollision verwenden mit Grabsprite, was ja nur mit den normalen Sprite geht.
Wo ist der Fehler?
mfg
Code: Alles auswählen
Global x1.f,y1.f,dx.f,dy.f,winkel.f
Procedure sprite_grab()
Start3D()
RotateSprite3D(0,winkel,0)
DisplaySprite3D(0, 20,20,255)
Stop3D()
GrabSprite( 2, 0, 0, 104,104)
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)
;OpenWindowedScreen(WindowID(0),-100,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))
Box(0,0,64,64,RGB(255,0,255))
Circle(32,32,30,RGB(0,0,255))
StopDrawing()
TransparentSpriteColor(0, RGB(255, 0, 255))
TransparentSpriteColor(1, RGB(255, 0, 255))
TransparentSpriteColor(2, RGB(255,255,0))
dx=100
dy=100
ClearScreen(RGB(255,255,0))
sprite_grab()
DisplaySprite( 2, dx,dy)
Repeat
Event.l = WindowEvent()
ClearScreen(RGB(255,255,0))
If GetAsyncKeyState_(#VK_Z)
winkel=winkel+1
ElseIf GetAsyncKeyState_(#VK_R)
winkel=winkel-1
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
sprite_grab()
DisplayTransparentSprite( 1, 200,200)
DisplayTransparentSprite( 2, dx,dy)
FlipBuffers()
Until Event = #PB_Event_CloseWindow
End