hey ^__^
mit RotateSprite3D kann ein Sprite3D zwar gedreht werden, aber ich möchte in einem Sprite
den Uhrsprungspunkt eingeben können von dem aus rotiert wird.
Gibt es dafür evtl eine routine?
Sprite3D Origin
Re: Sprite3D Origin
Du musst dein Sprite danach nur um die Strecke MeinDrehpunkt_alt-MeinDrehpunkt_neu verschieben.
Re: Sprite3D Origin
Code: Alles auswählen
InitSprite()
InitSprite3D()
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, 256, 256,#PB_Sprite_Texture)
StartDrawing(SpriteOutput(1))
Box(0,0,128,128,$FF0000)
Box(128,0,128,128,$00FF00)
Box(0,128,128,128,$0000FF)
Box(128,128,128,128,$00FFFF)
StopDrawing()
CreateSprite3D(1,1)
Repeat
Event = WindowEvent()
ClearScreen(0)
Angle.f+0.02
Start3D()
RotateSprite3D(1, Degree(Angle), 0)
DisplaySprite3D(1, 128, 128) ; no shift, roate at center
dx = 128 : dy = 128 ; Shift to a corner
DisplaySprite3D(1, 384+Cos(Angle)*dx-Sin(Angle)*dy, 128+Sin(Angle)*dx+Cos(Angle)*dy) ; with shift
Stop3D()
FlipBuffers()
Until Event = #PB_Event_CloseWindow
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Re: Sprite3D Origin
sin cos..ich vergaß ^^STARGÅTE hat geschrieben:einfach mittels Cos und Sin die Koordinaten des DesplaySprite3D verschieben.Code: Alles auswählen
InitSprite() InitSprite3D() 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, 256, 256,#PB_Sprite_Texture) StartDrawing(SpriteOutput(1)) Box(0,0,128,128,$FF0000) Box(128,0,128,128,$00FF00) Box(0,128,128,128,$0000FF) Box(128,128,128,128,$00FFFF) StopDrawing() CreateSprite3D(1,1) Repeat Event = WindowEvent() ClearScreen(0) Angle.f+0.02 Start3D() RotateSprite3D(1, Degree(Angle), 0) DisplaySprite3D(1, 128, 128) ; no shift, roate at center dx = 128 : dy = 128 ; Shift to a corner DisplaySprite3D(1, 384+Cos(Angle)*dx-Sin(Angle)*dy, 128+Sin(Angle)*dx+Cos(Angle)*dy) ; with shift Stop3D() FlipBuffers() Until Event = #PB_Event_CloseWindow
dankesehr