Bild richtig zu Maus drehen
Übersicht

![]() |
juse4proBetreff: Bild richtig zu Maus drehen |
![]() Antworten mit Zitat ![]() |
---|---|---|
hi,
mein kleines problem ist blöd zu erklären: ich will, dass sich das raumschiff zur maus dreht, aber nicht synchron. ich zeig mal denCode: [AUSKLAPPEN] Function UpdateGame() While Not KeyHit(1) Or finish=1 DrawImage img_ships(0,var_pl_dir),var_pl_x,var_pl_y var_pl_x=320:var_pl_y=320 Line var_pl_x,var_pl_y,var_mx,var_my Text 5,5,degree#+" "+var_pl_dir Flip:Cls var_mx=MouseX() var_my=MouseY() degree#=ATan2(var_pl_y-var_my,var_pl_x-var_mx)+180 If var_pl_dir>degree var_pl_dir=var_pl_dir-1 ElseIf var_pl_dir<degree var_pl_dir=var_pl_dir+1 EndIf If var_pl_dir>359 var_pl_dir=0 EndIf Wend End Function übrigens: das bild sieht ungefähr so aus: # || || die # ist die nasenspitze plz big help |
||
Portfolio |LinkedIn |XING |
![]() |
RallimenSieger des 30-EUR-Wettbewerbs |
![]() Antworten mit Zitat ![]() |
---|---|---|
Versuch es mal so....
Code: [AUSKLAPPEN] degree# = ATan2 (var_pl_y - var_my,var_pl_x - var_mx) + 180
If var_pl_dir <> degree If var_pl_dir > degree If var_pl_dir - 180 < degree# then var_pl_dir = var_pl_dir - 1 else var_pl_dir = var_pl_dir + 1 endif else If var_pl_dir + 180 < degree# then var_pl_dir = var_pl_dir - 1 else var_pl_dir = var_pl_dir + 1 endif endif endif |
||
[BB2D | BB3D | BB+]
|
![]() |
juse4pro |
![]() Antworten mit Zitat ![]() |
---|---|---|
dann sagt er mir: array index out of bounds...
wieso? |
||
Portfolio |LinkedIn |XING |
![]() |
RallimenSieger des 30-EUR-Wettbewerbs |
![]() Antworten mit Zitat ![]() |
---|---|---|
weil dein Bild Index nur von 0 bis <360 geht.
also nach der If noch Code: [AUSKLAPPEN] var_pl_dir =(var_pl_dir+360) mod 360
damit ist sichergestellt das es immer im Bereich ist |
||
[BB2D | BB3D | BB+]
|
![]() |
juse4pro |
![]() Antworten mit Zitat ![]() |
---|---|---|
ok, es flimmert aber jetzt immer hin und her | ||
Portfolio |LinkedIn |XING |
![]() |
RallimenSieger des 30-EUR-Wettbewerbs |
![]() Antworten mit Zitat ![]() |
---|---|---|
was heißt flimmert immer ?
nomal sollte sich dein bild immer richtig zum Ziel bewegen und flimmern sollte es auch nicht, oder hast du den Backbuffer() nicht initialisiert ? Beispielcode Code: [AUSKLAPPEN] Graphics 800,600,16,2 Dim Panzer(1,360);PanzerGrafik_berechnen max 360 Einzelbilder < Panzer(0,0) = CreateImage (40,20) ; also nur die erstellen die wirklich gebraucht werden! Rect 20,9,20,2:Rect 0,0,20,20,1 : GrabImage Panzer(0,0),0,0 For z = 0 To 359 panzer(0,z) = CopyImage (Panzer(0,0)) RotateImage panzer(0,z),z HandleImage Panzer(0,0),10,10 Next;PanzerGrafik_berechnen max 360 Einzelbilder ......fertig Dim FPS(3):FPS(0)= 60 : FPS(0)=CreateTimer(FPS(0)) SetBuffer BackBuffer() While Not KeyHit(1) Or finish=1 DrawImage Panzer(0,var_pl_dir),var_pl_x,var_pl_y var_pl_x=320:var_pl_y=320 Line var_pl_x,var_pl_y,var_mx,var_my Text 5,5,degree#+" "+var_pl_dir var_mx=MouseX() var_my=MouseY() degree# = ATan2 (var_pl_y - var_my,var_pl_x - var_mx) + 180 If var_pl_dir <> degree If var_pl_dir > degree If var_pl_dir - 180 < degree# then var_pl_dir = var_pl_dir - 1 else var_pl_dir = var_pl_dir + 1 EndIf Else If var_pl_dir + 180 < degree# Then var_pl_dir = var_pl_dir - 1 Else var_pl_dir = var_pl_dir + 1 EndIf EndIf EndIf var_pl_dir =(var_pl_dir+360) Mod 360 Text 9,9,"FPS:"+FPS(1):FPS(2)=FPS(2)+1:If MilliSecs()>FPS(3)+999 Then FPS(1)=FPS(2):FPS(2)=0:FPS(3)=MilliSecs() WaitTimer (FPS(0)) Flip:Cls:Wend:End |
||
[BB2D | BB3D | BB+]
|
![]() |
juse4pro |
![]() Antworten mit Zitat ![]() |
---|---|---|
ich meine wenn ich den code habe:
Code: [AUSKLAPPEN] Graphics 800,600,16,2
Dim Panzer(1,360);PanzerGrafik_berechnen max 360 Einzelbilder < Panzer(0,0) = CreateImage (40,20) ; also nur die erstellen die wirklich gebraucht werden! Rect 20,9,20,2:Rect 0,0,20,20,1 : GrabImage Panzer(0,0),0,0 For z = 0 To 359 panzer(0,z) = CopyImage (Panzer(0,0)) RotateImage panzer(0,z),z HandleImage Panzer(0,0),10,10 Next;PanzerGrafik_berechnen max 360 Einzelbilder ......fertig Dim FPS(3):FPS(0)= 60 : FPS(0)=CreateTimer(FPS(0)) SetBuffer BackBuffer() While Not KeyHit(1) Or finish=1 DrawImage Panzer(0,var_pl_dir),var_pl_x,var_pl_y var_pl_x=320:var_pl_y=320 Line var_pl_x,var_pl_y,var_mx,var_my Text 5,5,degree#+" "+var_pl_dir var_mx=MouseX() var_my=MouseY() degree# = ATan2 (var_pl_y - var_my,var_pl_x - var_mx) + 180 If var_pl_dir <> degree If var_pl_dir > degree If var_pl_dir - 180 < degree# then var_pl_dir = var_pl_dir - 8 else var_pl_dir = var_pl_dir + 8 EndIf Else If var_pl_dir + 180 < degree# Then var_pl_dir = var_pl_dir - 8 Else var_pl_dir = var_pl_dir + 8 EndIf EndIf EndIf var_pl_dir =(var_pl_dir+360) Mod 360 Text 9,9,"FPS:"+FPS(1):FPS(2)=FPS(2)+1:If MilliSecs()>FPS(3)+999 Then FPS(1)=FPS(2):FPS(2)=0:FPS(3)=MilliSecs() WaitTimer (FPS(0)) Flip:Cls:Wend:End das, weil sich die schiffe sonst zu langsam drehen |
||
Portfolio |LinkedIn |XING |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group