Bataion - Formation (mathe -.-)

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Xawer23

Betreff: Bataion - Formation (mathe -.-)

BeitragFr, Mai 11, 2012 15:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo, ich werkle derzeit an einem RTS-Spiel (im stil von starcraft oder AoE). Wenn man nun mehrere Einheiten ausgewählt hat und ihnen einen Bewegungsbefehl gibt, sollen sich natürlich nicht alle exakt auf die selbe stelle zubewegen, sondern in einer Art 'formation' anordnen.
Um überhaupt erstmal das skript dafür zu erstellen ahbe ich diesen Teil 'outgesourced':

Code: [AUSKLAPPEN]

Graphics 1000,1000,32,2
SetBuffer BackBuffer()
timer = CreateTimer(60)
amount = 5

Repeat
Cls
WaitTimer timer
Color 0,255,0
Line 500,500,MouseX(),MouseY()

Text 500,20,MouseX()-500 + " - " + amount,1,1


If (MouseX() - 500) < -100 Or (MouseX() - 500) > 100 Then
   
   distx = MouseX() - 500
   disty = MouseY() - 500
   
   laenge# = Sqr((distx*distx)+(disty*disty))
   
   vx# = distx / laenge
   vy# = disty / laenge
      
   For u = 0 To amount
      
      Oval (MouseX()-15)-u*vx*32,(MouseY()-15)-u*vy*32,30,30,0
   Next
         
      
   
End If

Flip
Until KeyHit(1)

End


Wie man sieht, stellen sich die einheiten (im beispiel die grünen kreise) genau hintereinander auf. Ich will, dass sie aber nebeneinander stehen - also quasi entlang einer orthogonalen zu der grünen linie. Ich habe da schon mein gesamtes 12.klasse-wissen mit reingebracht, aber weder vertauschen von x und y faktor (vx/vy im code) noch der bei der orthogonalen übliche Ansatz 1/vx führen zum gewünschten Ergebnis.
Weiß jemand Rat?

Xeres

Moderator

BeitragFr, Mai 11, 2012 16:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Vertausche X/Y und multipliziere eins mit -1 und du erhältst den Orthogonalen Vektor:
Code: [AUSKLAPPEN]
vx# = disty / laenge
vy# = -distx / laenge
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)
 

Xawer23

BeitragFr, Mai 11, 2012 18:44
Antworten mit Zitat
Benutzer-Profile anzeigen
funktioniert ausgezeichnet!
danke vielmals, ich wäre nicht darauf gekommen, die steigung VOR dem normalisieren zu ändern. obwohls ja ganz logisch ist

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group