gegnerbewegung bei weltraumshootern...
Übersicht

![]() |
KryanBetreff: gegnerbewegung bei weltraumshootern... |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Wie wärs mit gegner/bewegungswinkel=Rnd(0,359)? | ||
![]() |
Kryan |
![]() Antworten mit Zitat ![]() |
---|---|---|
ich will die in nem editor oder so als
Zitat: vorgegebene strecken
haben dumme sprüche unterlasse ich lieber ![]() |
||
Webspaceanbieter?
Klick hier! Kultige Spieleschmiede? Klick hier! |
HW |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
genau deshalb frage ich ja auch
ich weiß ungefähr wie, aber nicht ganz genau ... ![]() |
||
Webspaceanbieter?
Klick hier! Kultige Spieleschmiede? Klick hier! |
![]() |
Firstdeathmaker |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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.. ![]() |
||
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group