zielsuchende raketen ...-->

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

Alfadur

Betreff: zielsuchende raketen ...-->

BeitragFr, Feb 27, 2004 23:04
Antworten mit Zitat
Benutzer-Profile anzeigen
high,

eine kurze einführung : ich hab ein raumschiff, das kann raketen auf andere raumschiffe schießen...
das raumschiff ist ein type der unter anderem auch den winkel, in dem das raumschiff gerade gedreht ist, enthält, nennen wir ihn turn#. wenn ich jetzt eine rakete schieße, hat diese rakete erstmal denselben wert turn# wie das raumschiff. aber wenn die jetzt ein anderes raumschiff verfolgen soll, was irgendwo rumfliegt, dann muß ich ja abhängig von der position des anderen raumschiffs den wert für turn# der rakete um einen bestimmten betrag in die richtige richtung korrigieren, so das die rakete irgendwann das andere schiff trifft....
ich hab mir hier schon ne zeichnung gemacht, da hab ich auch diverse winkels, aber irgendwie auch gerade ne blockade... ich war in mathe eigentlich nie so schlecht, aber irgendwie gehts gerade nicht weiter... vielleicht könnt ihr mir ja helfen.... vielleicht isses auch total einfach und ich sehs nur nicht... habt ihr erfahrung damit?

besten dank .-)

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragSa, Feb 28, 2004 0:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo, hab da schon öfter dieses beispiel gezeigt mit der Atan2 FunctionCode: [AUSKLAPPEN]
Graphics 800,600,16,2
SetBuffer BackBuffer()
Const ESC = 1, Bildwiederholung = 50, debug =1
Global frameTimer=CreateTimer(Bildwiederholung)
Global posX#= 100,PosY# = 100
While Not KeyDown(ESC)

Rect int(posX),int(PosY),10,10,0
If MouseHit(1) ; neues ziel zuweisen
  x_Ziel = MouseX()
  Y_Ziel = MouseY()
  grad = Objekt_richtung_grad(x_Ziel ,Y_Ziel,posX ,posY)
    posX_Speed# = Cos(grad )*2 ; 1 = Speed je nachdem wie viele Pixel schnell
    posY_Speed#  = Sin(grad )*2
End If

posX = posX  + posX_Speed
  If  posX_Speed < 0 And posX  < x_Ziel Then; abfrage ob ziel erreicht
   posX_Speed = 0
   posX = x_Ziel
  Else If posX_Speed > 0 And posX  > x_Ziel Then
   posX_Speed = 0
   posX = x_Ziel
  EndIf

posY = posY  + posY_Speed
  If  posY_Speed < 0 And posY  < y_Ziel Then; abfrage ob ziel erreicht
     posY_Speed = 0
     posY = y_Ziel
  Else If posY_Speed > 0 And posY  > y_Ziel Then
    posY_Speed = 0
    posY = y_Ziel
  EndIf
 
If debug Then
Text 500,360, "posX :      "+ posX
Text 500,380, "posY:       "+ posY
Text 500,400, "posX Speed: "+ posX_Speed
Text 500,420, "posY Speed: "+ posY_Speed
Text 500,440, "x_Ziel :     "+  x_Ziel
Text 500,460, "y_Ziel :     "+  y_Ziel
Text 500,480, "Grad :       "+  grad
EndIf

WaitTimer(frameTimer)
   Flip
   Cls

Wend
End
Function Objekt_richtung_grad(Zielpunkt_X,Zielpunkt_Y,Ausgangspunkt_X,Ausgangspunkt_Y )
Waagerechte  = Zielpunkt_X -Ausgangspunkt_X
Hoehe              = Zielpunkt_Y -Ausgangspunkt_Y
  ;0 grad ist hier nach links und im Uhrzeigersinn wird er höher
grad =ATan2(Hoehe ,Waagerechte)
If grad < 0 Then grad = grad+360
Return grad

End Function

die Function Objekt_richtung_grad sollte dir dabei helfen das zu verstehen,
ist zwar nicht genau das was du sucht aber das Prinzip ist das gleiche
[BB2D | BB3D | BB+]

Alfadur

BeitragSa, Feb 28, 2004 5:58
Antworten mit Zitat
Benutzer-Profile anzeigen
ach, das ist ja schön.... hm, das problem ist nur das es wirklich nich so richtig das ist was ich suche, aber das ist auch garnicht so schlimm. eigentlich wollte ich ja wissen wie ich die rakete drehen muß.... hm, aber da ich vorhin ne straßenbahnfahrt vor mir hatte, hab ich mir papier und stift geschnappt und mal überlegt, und mit hilfe von einem in mathe auch nich sonderlich versiertem kumpel ist es uns doch tatsächlich geglückt da was zu überlegen. es hat ganz schrecklich viel mit winkeln und so zeuxx zu tun... und genau das werde ich jetzt mal weiterverfolgen. trotzdem danke.... Smile ich greife gerne mal wieder auf dich zurück. gute nacht ....

mfg sagt der martin (der sich jetzt noch nudeln mit pilzen macht)

TheShadow

Moderator

BeitragSa, Feb 28, 2004 13:40
Antworten mit Zitat
Benutzer-Profile anzeigen
in onlinehilfe ist auch gutes ATAN2-beispiel...
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group