In die richtige Richtung drehen!

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

MVB

Betreff: In die richtige Richtung drehen!

BeitragSo, Dez 28, 2003 15:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie schaffe ich es, dass gegnerische Raumschiffe sich, in meinem Weltraumshooter, immer in die richtung von meinem Schiff bewegen?
Also, wenn ein Schiff nicht auf meins zeigt, dann soll es sich halt in die schnellst mögliche Richtung drehen bis es auf mein Schiff zeigt!

Ich hoffe ihr könnt mir helfen!
Danke! Wink
 

konstantin

BeitragSo, Dez 28, 2003 15:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Schau mal in der Onlinehilfe nach ATAN

Last Anquav Hero

BeitragSo, Dez 28, 2003 17:15
Antworten mit Zitat
Benutzer-Profile anzeigen
nee, atan2 bessa
Code: [AUSKLAPPEN]

winkel=atan2(Spieler_X-Gegner_X,Spieler_Y-Gegner_Y)

und tschüss
p.s. schaut mal my sig an

D2006

Administrator

BeitragSo, Dez 28, 2003 18:28
Antworten mit Zitat
Benutzer-Profile anzeigen
umgedreht
Code: [AUSKLAPPEN]

winkel = ATan2(delta_Y,delta_X)

mfg

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragSo, Dez 28, 2003 18:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,
solche Fragen kommt aber öfter
mit ATAN2 gehts super
hab da auch noch eine demo für Laughing
Code: [AUSKLAPPEN]
Graphics  800,600,16,2
SetBuffer BackBuffer()
Dim Panzer (360)
;PanzerGrafik_berechnen > 360 Einzelbilder <
      Rect 9,0,2,20
      Rect 0,10,20,20,1
      Flip
      Panzer(0) = CreateImage (20,30)
      GrabImage Panzer(0),0,0
      MidHandle Panzer(0)
      
      For z= 1 To 359
      panzer(z) = CopyImage (Panzer(0))
      RotateImage panzer(z),z
      MidHandle Panzer(z)
      Text 500,500,z
      Flip
      Cls
      Next
x=  400: y= 30

Repeat
   If MouseHit(1) Then
      x= MouseX ()
      Y= MouseY ()      ;Winkel bezieht sich auf den Panzer
      winkel = Objekt_richtung_grad(x,y ,400 ,300)
   End If

   ;Geschuetz_turm_drehen (posPanzer,Winkel ) so könnte die heißen
   
   If posPanzer > Winkel  And  posPanzer -180 < Winkel  Then posPanzer = posPanzer -1
   If posPanzer > Winkel  And  posPanzer -180 > Winkel  Then posPanzer = posPanzer +1
   If posPanzer < Winkel  And  posPanzer +180 < Winkel  Then posPanzer = posPanzer -1
   If posPanzer < Winkel  And  posPanzer +180 > Winkel  Then posPanzer = posPanzer +1
   If posPanzer = Winkel -180  Or posPanzer -180  = Winkel  Then posPanzer = posPanzer +1
   
   If posPanzer < 0      Then posPanzer =359;Damit es im Kreis läuft
   If posPanzer > 359 Then posPanzer =     0
   
   If posPanzer = Winkel  Then Line x,y ,400 ,300 ;Schuss
   Oval  x-5,y-5,10,10,1 ;Klickpunkt malen
   DrawBlock Panzer(posPanzer),400,300;Panzer malen
   Text 100,30, posPanzer + " Panzer"
   Text 100,60, winkel +      " Grad"
   Flip
   Cls
   Until KeyHit (1)
End


Function Objekt_richtung_grad(Zielpunkt_X,Zielpunkt_Y,Ausgangspunkt_X,Ausgangspunkt_Y )
grad =ATan2(Zielpunkt_Y -Ausgangspunkt_Y, Zielpunkt_X -Ausgangspunkt_X)+90; +90 verschiebt die 0Grad Position
If grad < 0 Then grad = grad+360
Return grad
End Function

inklusive der abfragen für den kürzeren Weg

Wenn dir dies weiterhilft
[BB2D | BB3D | BB+]

MVB

BeitragMo, Dez 29, 2003 19:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke! Wink

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group