aber das funktionniert trotzdem nich richtig
wenig Aussagekräftig oder ?
Hier eine BeispielDemo:
Code: Alles auswählen
InitSprite()
InitSprite3D()
InitKeyboard()
InitMouse()
; Berechnet den Winkel
Procedure.f Angle(x.f,y.f)
Protected Angle.f
Angle = ATan(y/x)
If x < 0 : Angle + #PI : EndIf
If x = 0 And y = 0 : Angle = 0 : EndIf
ProcedureReturn Angle*180/#PI
EndProcedure
OpenWindow(0, 0, 0, 800, 600, "SCREEN", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
OpenWindowedScreen(WindowID(0), 0, 0, 800, 600, 0, 0, 0)
CreateSprite(1, 64, 64, #PB_Sprite_Texture)
StartDrawing(SpriteOutput(1))
Line(63,0,-64,32,$FFFFFF)
Line(63,63,-64,-32,$FFFFFF)
StopDrawing()
CreateSprite3D(1,1)
x = 300
y = 400
Repeat
WindowEvent()
ClearScreen(0)
Start3D()
RotateSprite3D(1, Angle(x-MouseX(),y-MouseY()), 0)
DisplaySprite3D(1, x-32, y-32)
Stop3D()
StartDrawing(ScreenOutput())
DrawingMode(1)
Circle(MouseX(), MouseY(), 5, $00FFFF)
StopDrawing()
FlipBuffers()
ExamineMouse()
ExamineKeyboard()
If KeyboardPushed(#PB_Key_Escape) : End : EndIf
ForEver
Hier Link zum gleichen Thema:
Winkel zu einem Punkt bekommen
Du kannst auch Angle(MouseX()-x,MouseY()-y) machen oder noch mal 90 addierne, jenadem wie dein Sprite Orientiert ist.