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