gegnerbewegung bei weltraumshootern...

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

Kryan

Betreff: gegnerbewegung bei weltraumshootern...

BeitragMi, Feb 22, 2006 20:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,
wie kann ich die gegner vorgegebene strecken längsfliegen lassen , die halt aber für jeden gegner unterschiedlich sein können ( also nich mit ner sinus-kurve oder ähnliches)
ich hoffe ihr wisst was ich meine ^^

mfg kryan
Webspaceanbieter?
Klick hier!
Kultige Spieleschmiede?
Klick hier!
 

HW

BeitragMi, Feb 22, 2006 20:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie wärs mit gegner/bewegungswinkel=Rnd(0,359)?

Kryan

BeitragMi, Feb 22, 2006 20:52
Antworten mit Zitat
Benutzer-Profile anzeigen
ich will die in nem editor oder so als

Zitat:
vorgegebene strecken


haben

dumme sprüche unterlasse ich lieber Wink
Webspaceanbieter?
Klick hier!
Kultige Spieleschmiede?
Klick hier!
 

HW

BeitragMi, Feb 22, 2006 20:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe schon geahnt, dass meine Antwort nicht ausreichen wird. Naja, irgendwie müsste man den Pfad speichern. Die Frage ist nur: Wie? Eventuell in einem bestimmten Abstand jeweils ein Koordinatenpaar (-tripel). Aber es gibt bestimmt bessere Methoden dafür.

Kryan

BeitragMi, Feb 22, 2006 21:00
Antworten mit Zitat
Benutzer-Profile anzeigen
genau deshalb frage ich ja auch
ich weiß ungefähr wie, aber nicht ganz genau ... Crying or Very sad
Webspaceanbieter?
Klick hier!
Kultige Spieleschmiede?
Klick hier!

Firstdeathmaker

BeitragMi, Feb 22, 2006 22:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Darüber habe ich bis heute immer schon nachgegrübelt...

Also bisher bin ich so weit gekommen:
Mit Beziersplinekurven kann man die Gegner auf beliebigen Kurven bewegen, und bestimmte Punkte passieren lassen. Kannst ja mal nach dem Thema in Wikipedia suchen, da bin ich auch schonmal fündig geworden. Das Problem das sich dann jedoch aufgetan hat, war, wie man das ganze dann verwalten, also wie man z.B. ein Raster einbauen soll in das sich alle Gegner einreihen und wie man nachher halbzufällige Abflugbewegungen organisiert. Habs jetzt erstmal einfach so gemacht, dass sich die Gegner individuell intelligent bewegen, also verschiedene hardgecodete KI-Routinen, bisher ohne Beziersplinetechnik, aber die kann ich ja immer noch einbauen.
www.illusion-games.de
Space War 3 | Space Race | Galaxy on Fire | Razoon
Gewinner des BCC #57 User posted image

Kryan

BeitragMi, Feb 22, 2006 22:13
Antworten mit Zitat
Benutzer-Profile anzeigen
ich glaub ihr versteht mich falsch:

ich will die bewegungslinie festlegen mit nem editor
nichts mit zufall und dergleichen
ich glaub ich nehme die version von HW
die gefällt mir auch wenn sie schwer ist
Webspaceanbieter?
Klick hier!
Kultige Spieleschmiede?
Klick hier!

Iguan

BeitragMi, Feb 22, 2006 23:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Such mal im Netz nach "SplineMagic"
das ist ein Editor, in dem du Splines editieren kannst...
Du bekommst dann pro Spline 8 Variabeln, die du dann in einem kleinen BB-Programm in eine Formel einsetzen kannst. Und schon "fliegt" dein Gegner dem Editierten pfad entlang...
.. musst halt im netz suchen, ist aber nicht schwierig zu finden.. Wink

hectic

Sieger des IS Talentwettbewerb 2006

BeitragDo, Feb 23, 2006 1:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Erstelle im Raum Waypoints die die Gegner 'passieren' müssen. Wenn eine bestimmte Entfernung zum nächsten Waypoint unterboten wurde, wird der nächste Waypoint angesteuert. Das letztere ist deswegen wichtig, da es sonst zwei 'unschöne' Bewegungsmuster gibt.
1) Die Schiffe bewegen sich absolut in einer vorgegebenen Linie und wenn der nächste Waypoint angeflogen werden soll, knickt die Flugbahn äusserst unrealistisch ab.
2) Um Problem 1 zu lösen, bekommen die Schiffe eine Massenträgheit. Erreichen aber nie punktgenau ein Waypoint und irren dann ewig um einen umher.

Hier mal ein Beispiel ohne Trägheit aber mit weichem einlenken...

Code: [AUSKLAPPEN]
;Grafikkramm
Graphics 400,400,0,2
SetBuffer BackBuffer()

;Schiffe
Type ship
 Field xp#;X-Position
 Field yp#;Y-Position
 Field wp%;Next Waypoint
 Field wk#;Winkel
End Type

;Wegepunkte
Dim xwp(9);X-Waypoints
Dim ywp(9);Y-Waypoints

ws#=0;SollWinkel
wi#=0;IstWinkel
xwp(0)=035:ywp(0)=090
xwp(1)=060:ywp(1)=030
xwp(2)=270:ywp(2)=030
xwp(3)=240:ywp(3)=140
xwp(4)=090:ywp(4)=180
xwp(5)=290:ywp(5)=270
xwp(6)=230:ywp(6)=370
xwp(7)=140:ywp(7)=360
xwp(8)=360:ywp(8)=040
xwp(9)=165:ywp(9)=240

;Hauptschleife
While Not KeyHit(1)

 ;Mauskramm
 mx=MouseX()
 my=MouseY()

 ;Wegepunkte
 For q=0 To 9
  Text xwp(q)-4,ywp(q)-6,q
 Next


 ;Neues Schiff
 If MouseHit(1)
  sh.ship=New ship
  sh\xp=mx
  sh\yp=my
  sh\wk=ATan2(ywp(0)-my,xwp(0)-mx)
  sh\wp=0
 End If

 ;Schiffe bewegen
 For sh.ship=Each ship
  ws=ATan2(ywp(sh\wp)-sh\yp,xwp(sh\wp)-sh\xp)
  sh\wk=sh\wk+Sgn(Sin(ws-sh\wk))
  sh\xp=sh\xp+Cos(sh\wk)
  sh\yp=sh\yp+Sin(sh\wk)
  Line sh\xp,sh\yp,sh\xp+Cos(sh\wk)*10,sh\yp+Sin(sh\wk)*10
  If Sqr((xwp(sh\wp)-sh\xp)^2+(ywp(sh\wp)-sh\yp)^2)<50 sh\wp=sh\wp+1
  If sh\wp>9 sh\wp=0;Delete sh
 Next

 Flip
 Cls
Wend
End

Firstdeathmaker

BeitragDo, Feb 23, 2006 8:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Kryan, ich glaube du hast mich falsch verstanden. Was ich vorschlagen wollte, war, die Bewegungen über Beziersplinekurven laufen zu lassen. Habe gerade mal eben einen Beispielcode aus BMax portiert um das ganze zu zeigen:

Code: [AUSKLAPPEN]
Global GFX_X=800
Global GFX_Y=600

Graphics GFX_X,GFX_Y,32,2
SetBuffer BackBuffer()


Type Punkt
Field x#
Field y#
End Type

Type Kurve
Field P1.Punkt
Field P2.Punkt
Field P3.Punkt
Field P4.Punkt
End Type

Repeat;Hauptschleife
   counter=1

   Repeat
      If MouseHit(1)
         Select counter
            Case 1
               k.Kurve = New Kurve
               k\P1 = Punkt_Create(MouseX(),MouseY())
            Case 2
               k\P2 = Punkt_Create(MouseX(),MouseY())
            Case 3
               k\P3 = Punkt_Create(MouseX(),MouseY())
            Case 4
               k\P4 = Punkt_Create(MouseX(),MouseY())
         End Select
         counter=counter+1
      EndIf
      

      Text 10,10,"4 Mausklicks um Kurve hinzuzufügen"
      If k<>Null
         If k\P1<>Null Text k\P1\x,k\P1\y,"P1"
         If k\P2<>Null Text k\P2\x,k\P2\y,"P2"
         If k\P3<>Null Text k\P3\x,k\P3\y,"P3"
         If k\P4<>Null Text k\P4\x,k\P4\y,"P4"
      EndIf
      Flip
   
      If KeyHit(27) End
   Until counter=5

   Cls
   For k.Kurve = Each Kurve
      Kurve_Draw(k)
   Next
   Flip
   If KeyHit(27) End
Forever

End




Function Punkt_Create.Punkt(x#,y#)
   p.Punkt = New Punkt
   p\x = x
   p\y = y
   Return p
End Function


Function Kurve_Draw(k.Kurve)
   Local x#,y#,lastx#,lasty#,t#

   x# = k\P1\x*(1-t)^3+3*k\P2\x*t*(1-t)^2+3*k\P3\x*t^2*(1-t)+k\P4\x*t^3
   y# = k\P1\y*(1-t)^3+3*k\P2\y*t*(1-t)^2+3*k\P3\y*t^2*(1-t)+k\P4\y*t^3

   For t=0 To 1 Step 0.1
      lastx# = x#
      lasty# = y#
      x# = k\P1\x*(1-t)^3+3*k\P2\x*t*(1-t)^2+3*k\P3\x*t^2*(1-t)+k\P4\x*t^3
      y# = k\P1\y*(1-t)^3+3*k\P2\y*t*(1-t)^2+3*k\P3\y*t^2*(1-t)+k\P4\y*t^3
      Line lastx,lasty,x,y
   Next
   Text k\P1\x,k\P1\y,"P1"
   Text k\P2\x,k\P2\y,"P2"
   Text k\P3\x,k\P3\y,"P3"
   Text k\P4\x,k\P4\y,"P4"
End Function
www.illusion-games.de
Space War 3 | Space Race | Galaxy on Fire | Razoon
Gewinner des BCC #57 User posted image

hectic

Sieger des IS Talentwettbewerb 2006

BeitragDo, Feb 23, 2006 22:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Bei mir wird alles so dargestellt wie ich die Tasten drücke wo welches Zeichen auch drauf gemalt wurde... Also, vielleicht hast du ja eine US-Version von Sinnlos oder die deutschen Schriftzeichen nicht installiert oder,... oder,... Bei 'in game text' sollte man diese allerdings meiden...

Firstdeathmaker

BeitragDo, Feb 23, 2006 22:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Keine Angst, bei mir werden Umlaute auch nicht dargestellt, bin aber bei den Beispielen nicht so darauf bedacht das extra zu beachten, dann fehlt halt nen Buchstabe.
www.illusion-games.de
Space War 3 | Space Race | Galaxy on Fire | Razoon
Gewinner des BCC #57 User posted image

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group