Angriffsreihenfolge [3D]

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

Dottakopf

Betreff: Angriffsreihenfolge [3D]

BeitragSo, Feb 11, 2007 15:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo !

Vorab muss ich zugeben, dass ich so einen Theard schon hatte. Und mir da auch versucht wurde, mit mir das Problem zu lösen. Ich weis auch wie es zu lösen ist, doch ich komm beim umsetzten nicht dahinter. Dann war ich noch ne Woche Krank und da lag das ganze erstmal... Hab heut mal wieder den alten Theard gesucht und studiert ---> und bin so schlau wie vorher. Ich bin einfach zu blöde. Crying or Very sad Embarassed Crying or Very sad. Drum wollte ich fragen, ob sich vielleicht einer nochmal Zeit für mich nimmt und mir das Schritt für Schritt ,als ob ich ein Super dödel wäre,erklärt ?

Das hab ich damals als Beschreibung gepostet:
siehe auch : ( http://87.230.14.1/forum/viewt...ht=#229867 )

Ok so schauts kurzgefasst aus:
Ich kann mit nem player "Soldaten" erschaffen welche mir auch im "Def_modus" kontinuirlich folgen. Sobald ich in den "Angriffs_modi" wechsle stürzen sich diese auf diewerse Feinde in der Umgebung und deleten diese bei Kontakt auch.

Das Problem :
Wenn gerade mal mehr Gegener auf einem Haufen stehen können sich meine "Soldaten" nicht entscheiden wen sie zuerst angreifen sollen und machen ne kleine Kaffepause genau in der Mitte des Gegnerischen Haufens.
Das ist aber nicht das Ziel ^^. Sie sollen ja Objekt(Soldat) für Objekt abarbeiten.

Ich glaube auch zu wissen woran das liegt: Jeder Soldat hat eine Art "Angrifsradius" er liegt zwischen 1 und 70. Sobalt ich den Befehl zum Angriff gebe pointet er auf alle Objekte innerhalb seines Radiuses und düst auf sie zu. Und genau dan passiert es, er merkt das da ja 2 Gegner sind und versucht dann dumm wie er ist(ok ich hab ihn erschaffen... ) beide gleichzeitig zu deleten ! Das geht aber nicht also bleibt er genau in der Mitte stehen....

Meine Aktuelle Angriffsfunktion schaut so aus: (ein teil davon)


Code: [AUSKLAPPEN]

 For info2.enemy = Each enemy
    For info.ant = Each ant

   ;Angriff
  If info\ant_ATK = True And EntityDistance(info\ant_entity,info\eny_entity) Then
     TurnEntity info\ant_entity,0,DeltaYaw(info\ant_entity,info2\eny_entity),0
     MoveEntity info\ant_entity,0,0,0.8
  End If   
                 
               
   Next 
Next


JaJa ich weis, dass da ja nix drin steht wobei die Ameise(info\ant_entity) auch nur annähernd darauf kommen würde sich den am nächsten liegenden Enemy auszusuchen.... Aber dan wären da soviele Zeilenumbrüche drin gewesen, dass keine mehr was verstanden hätte.

Aber so inetwa habs ich versucht zu lösen:
Code: [AUSKLAPPEN]

       Save = MaxRadius
       if distance(x,y) < MaxRadius and distance(xy) < Save then
           save = distance(x,y)
           pointentity ant,enemy       (so wie bring ich jetzt save nei ??)
           moveentiy ant,0,0,0.8
       end if


boa ich hab sowas von keine Ahnung ^^. Bitte helft mir weiter. (ich poste mal gesammten Quellcode im code Pasting, da da auch noch andere Sachen drin sind welche bestimmt überarbeitet werden können...) und wenn wer mal bock hat darf er da gerne drann rumtüfteln. ( http://87.230.14.1/upload/code.php )

mfg Dottakopf
Rechtschreibfehler gelten der allgemeinen Belustigung!

FireballFlame

BeitragSo, Feb 11, 2007 18:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Mach doch für deinen Soldaten eine Variable (bzw. ein Field), z.B. "Target".
Dann soll er sich einmal entscheiden, welchen Gegner er angreifen will, speichert diesen in der Variable und jagt ihn.
Du kannst dann ja noch einbaun, dass er sich wieder ein neues Ziel sucht, wenn er das alte nach einer gewissen Zeit nicht kriegt oder so ^^
PC: Intel Core i7 @ 4x2.93GHz | 6 GB RAM | Nvidia GeForce GT 440 | Desktop 2x1280x1024px | Windows 7 Professional 64bit
Laptop: Intel Core i7 @ 4x2.00GHz | 8 GB RAM | Nvidia GeForce GT 540M | Desktop 1366x768px | Windows 7 Home Premium 64bit

NightPhoenix

BeitragSo, Feb 11, 2007 20:55
Antworten mit Zitat
Benutzer-Profile anzeigen
ich hab ne bessere idee...
mach doch einfach einen timer... aller 3-10 schleifendurchlüfe wird nur die Entscheidung eines Angreifers für einen Gegner getroffen... also wenn das genau in der mitte ist dürfe sich das zuerst für einen entscheiden. Ein ganz paar Schleifenduchläufe später ist er an einem näher als an dem Anderen. Da gibts auch keine entscheidungsschwierigkeiten mehr Wink

versuchs also mal damit

Code: [AUSKLAPPEN]
DecCount=DecCount+1
if DecCount>5 then
DecCount=1
UPDATE_NPC_DECISION
endif


ferdsch ^^

FireballFlame

BeitragMo, Feb 12, 2007 10:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Finde deine Methode nicht besser. Denn da sich die Gegner ja bewegen, kann es auch passieren, dass der Soldat planlos in der Gegend herumirrt, weil immer wieder ein anderer Gegner in den Weg läuft ^^
PC: Intel Core i7 @ 4x2.93GHz | 6 GB RAM | Nvidia GeForce GT 440 | Desktop 2x1280x1024px | Windows 7 Professional 64bit
Laptop: Intel Core i7 @ 4x2.00GHz | 8 GB RAM | Nvidia GeForce GT 540M | Desktop 1366x768px | Windows 7 Home Premium 64bit

Dottakopf

BeitragMo, Feb 12, 2007 14:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Ah ok danke für eure Antworten. Bin grad im Computerunterricht von unserer Schule und kann daher etz ned an bb. (habt ihr mal mein progi im codepasting angeguckt ?? wie findet ihr die Idee).

wenn ich irgendwann heut Abend :cry wieder daheim bin probier ich mal beides durch Wink

mfg Dottakopf
Rechtschreibfehler gelten der allgemeinen Belustigung!

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group