bewegung zu ziel und verdrehung

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

da_poller

Betreff: bewegung zu ziel und verdrehung

BeitragDi, Jul 29, 2008 22:20
Antworten mit Zitat
Benutzer-Profile anzeigen
ich habe ein bild (360 grad in 1 grad schritten gedreht) und dieser spieler dreht sich und bewegt sich zu der position die mit der maus angeklickt wude..

jedoch am ende der bewegung dreht er sich auf 0 grad drehung .. und das sieht alles andere als schön aus.. kann ich das irgendwie beheben?(bin nicht soo mega fit in mathe.. allein der code den ich bis jetzt hab war viel für die grauen zellen :) )

Code: [AUSKLAPPEN]
While Not KeyHit(1)      ;Beginn der Hauptschleife
   ClsColor 100,100,100
   Cls
   
   mx=MouseX():my=MouseY();mauspos
   
   If MouseDown(1) Then
      pzx=mx
      pzy=my
      run=1
   EndIf
   Color 255,0,255
   Line pzx,pzy,x,y
   
   winkel=((ATan2(pzx-x,y-pzy)+360)Mod 360)-90
   
   If winkel => 359 Then winkel = winkel-359
   If winkel <= 0 Then winkel = winkel+359
   
   
   
   If x<>pzx Or y<>pzy And run=1 Then
      x = x + Cos(winkel)*geschwindigkeit
      y = y + Sin(winkel)*geschwindigkeit
   EndIf
   If x=pzx And y=pzy Then run=0
   
   
   Color 255,255,255
   Rect mx-1,my-1,3,3,1
   Text 10,10,mx+" "+my+" "+x+" "+y+" "+winkel
   
   DrawImage player(winkel),x,y
   
   Flip
Wend

hectic

Sieger des IS Talentwettbewerb 2006

BeitragDi, Jul 29, 2008 22:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Eine Möglichkeit die mir so einfiel:

Code: [AUSKLAPPEN]
Graphics 800,600,0,2
SetBuffer BackBuffer()
ClsColor 100,100,100

Local Timer=CreateTimer(75)
Local X#=100
Local Y#=100
Local pzX=0
Local pzY=0
Local Winkel#=0
Local Run=0
Local MX%=0
Local MY%=0
Local Geschwindigkeit=2


While Not KeyHit(1) ;Beginn der Hauptschleife
   Cls
   
   MX=MouseX() ;Mauspos
   MY=MouseY()
   
   If MouseDown(1) Then
      pzX=MX
      pzY=MY
      Winkel=((ATan2(pzX-X,Y-pzY)+360)Mod 360)-90
      Run=1
   EndIf
   
   Color 255,0,255
   Line pzX,pzY,X,Y
   
   If Winkel > 360 Then Winkel = Winkel - 360
   If Winkel < 0 Then Winkel = Winkel + 360
   
   If Run = 1 Then
      If Abs(pzX-X) < Geschwindigkeit * 2 Then
         If Abs(pzY-Y) < Geschwindigkeit * 2 Then
            Run = 0
         End If
      End If
   End If
   
   If X <> pzX Or Y <> pzY And Run = 1 Then
      X = X + Cos(Winkel)*Geschwindigkeit
      Y = Y + Sin(Winkel)*Geschwindigkeit
   EndIf
   
   If X = pzX And Y = pzY Then Run = 0
   
   Color 255,255,255
   Rect MX-1,MY-1,3,3,1
   Text 10,10,MX+" "+MY+" "+X+" "+Y+" "+Winkel+" RUN:"+Run
   
   Line X,Y,X+Cos(Winkel)*20,Y+Sin(Winkel)*20
;   DrawImage player(winkel),x,y
   
   WaitTimer(Timer)
   Flip 0
Wend
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D
 

da_poller

BeitragDi, Jul 29, 2008 22:42
Antworten mit Zitat
Benutzer-Profile anzeigen
die idee mit dem nicht verdrehen ist nciht schlecht aber nach deinem code läuft mein player am ziel vorbei ins unendliche ^^

aber schon ein anfang ichspiel mcih ncoh bisl rum..

ps.. it dem timer war ein guter wink danke .. :)

edit:

problem gelöst winkel player mussten float sein..

hectic

Sieger des IS Talentwettbewerb 2006

BeitragDi, Jul 29, 2008 22:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja, das liegt an etwas, wovon ich anders ausgegangen bin.

u.a. an

Code: [AUSKLAPPEN]
   If Winkel > 360 Then Winkel = Winkel - 360
   If Winkel < 0 Then Winkel = Winkel + 360


Dazu habe ich den Code noch nachträglich geändert. Da hast du anscheinend bereits die ersten Versionen getestet.

Teste den obigen Code nochmal. Sollte jetzt gehen.

Edit1: OK, ich sollte vielleicht zu ende lesen, wenn ich auf was antworte. Hast es ja anscheiend bereits selbst gelöst. *lalala*
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D
 

da_poller

BeitragDi, Jul 29, 2008 23:28
Antworten mit Zitat
Benutzer-Profile anzeigen
kein problem du warst super hilfestellung ..
schüsse hab ich auch schon drin
jetzt noch ne tilemap oder so in der art um auch schöne maps machen zu können
wird der nächste spaß(colision)^^

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group