Aus bestimmten Objekten das nahegelegenste ausschließen?
3 verfasser
Autor
Nachricht
Bowserkoopa Staatsrat
Alter : 30 Anmeldedatum : 21.12.08
Thema: Aus bestimmten Objekten das nahegelegenste ausschließen? Sa Jun 26, 2010 6:16 pm
Es gibt 5 Hilfsobjekte im Szenario und ein Clonk soll das, das bei ihm am nächsten ist, ausschließen, und dann sich per Zufall zu einem der anderen Objekte bewegen. Wie stelle ich das am besten an?
Limeox Admiral
Anmeldedatum : 25.04.10
Thema: Re: Aus bestimmten Objekten das nahegelegenste ausschließen? Sa Jun 26, 2010 7:38 pm
Du packst das Objekt, das du nicht haben willst, in Find_Exclude(), welches du per FindObject2() und Sort_Distance() rausbekommst.
var array = FindObjects(Find_ID(C4ID), Find_Exclude(FindObject2(Find_ID(C4ID), Sort_Distance()))); Und ein zufälliges raussuchen: var obj = array[Random(GetLength(array))];
Bowserkoopa Staatsrat
Alter : 30 Anmeldedatum : 21.12.08
Thema: Re: Aus bestimmten Objekten das nahegelegenste ausschließen? Sa Jun 26, 2010 7:44 pm
Allerdings ist es so, dass die ID des Objektes unbekannt ist. Also er führt diverse Aktionen aus und bewegt sich per Zufall dann zu Punkt 1,2,3 oder 4, und soll anschließend wieder auf einen Punkt zusteuern, allerdings nicht zu dem, in dessen Nähe er ist. Ist er bei Punkt 2, soll er z.b. nur zu Punkt 1,3 oder 4 gehen.
Limeox Admiral
Anmeldedatum : 25.04.10
Thema: Re: Aus bestimmten Objekten das nahegelegenste ausschließen? Sa Jun 26, 2010 7:48 pm
Hm. Hast du feste Objekte, oder sind die "Punkte" rein zufällig ein Flint, Goldklumpen etc? Wenns feste Objekte sind, gib ihnen eindeutige IDs, oder sortier sie gleich in ein globales Array ein.
Dann genügt FindObjects(g_array, Find_Exclude(FindObject2(g_array, Sort_Distance()))) wenn das globale Array g_array heißt.
Bowserkoopa Staatsrat
Alter : 30 Anmeldedatum : 21.12.08
Thema: Re: Aus bestimmten Objekten das nahegelegenste ausschließen? Sa Jun 26, 2010 8:06 pm
Also die Punkte sind Hilfsobjekte(spart Schreibarbeit ) und sollen eben nicht erneut Endpunkt für eine Aktion sein, deshalb soll der Clonk nicht dem ihm nächsten Punkt auswählen um dort wieder seine Aktion auszuführen. Übrigens: Sort_Distance ist gar nicht in der Doku?
Limeox Admiral
Anmeldedatum : 25.04.10
Thema: Re: Aus bestimmten Objekten das nahegelegenste ausschließen? Sa Jun 26, 2010 8:45 pm
Sort_Distance() steht in System.c4g/FindObject.c... besonders schlau wird man daraus aber nicht, da dort nur Engine-Konstanten zu irgendwas vermurkst werden. (*hust*, ja, mein Eindruck davon xD)
Was sind denn die Hilfsobjekte? Sind das wirklich nur Koordinaten, irgendwelche Zielobjekte oder feste Objekte? Oder was... werd daraus grad nicht wirklich schlau...
Bowserkoopa Staatsrat
Alter : 30 Anmeldedatum : 21.12.08
Thema: Re: Aus bestimmten Objekten das nahegelegenste ausschließen? So Jun 27, 2010 5:45 pm
Also das sind unsichtbare Objekte mit IDs, schweben in der Luft und werden von meinem Clonk angesteuert. Er errechnet seine Richtung indem er seine Position minus der Position des Hilfsobjektes errechnet und bewegt sich so dann dahin.
Problem ist, dass es eine Aktion gibt, bei der er dann z.b. entweder zu Hilfsobjekt 1 oder Hilfsobjekt 2 geht. Da es aber möglich ist, dass er sich schon bereits bei einem der beiden Punkte aufhält(insgesamt gibts 5), möchte ich dann eben diese Punkte ausschließen, so dass er dann nicht zu Hilfsobjekt 1 geht, wenn er sich da befindet(sieht ja blöd aus wenn er 90 Frames damit verschwendet, bei dem Punkt zu bleiben, an dem er ist)
Toastbrot Kadett
Anmeldedatum : 10.03.09
Thema: Re: Aus bestimmten Objekten das nahegelegenste ausschließen? So Jun 27, 2010 6:19 pm
Dann kann der Clonk doch immer in einer Localen Variable das ZUletzt angesteuerte Hilfsobjekt speichern und solange ein ZUfälliges auswählen bis er ein anderes findet.
Limeox Admiral
Anmeldedatum : 25.04.10
Thema: Re: Aus bestimmten Objekten das nahegelegenste ausschließen? So Jun 27, 2010 7:09 pm
Ich glaub, du verstehst nicht worauf ich hinauswill. Haben diese feste IDs? Werden die IDs nicht anderweitig verwendet? Oder haben bestenfalls alle dieselbe ID? Oder sinds nur irgendwelche Objekte (rumliegende Steine zB), die der Clonk je nach Situation aussucht?
Bowserkoopa Staatsrat
Alter : 30 Anmeldedatum : 21.12.08
Thema: Re: Aus bestimmten Objekten das nahegelegenste ausschließen? So Jun 27, 2010 8:31 pm
Es sind unterschiedliche Objekte mit unterschiedlichen ID. Zb KI_L für den linken Hilfspunkt, KI_R für den rechten, usw Mitte, oben und unten gibts auch noch. Sie werden nur vom KI-Clonk verwendet.
Limeox Admiral
Anmeldedatum : 25.04.10
Thema: Re: Aus bestimmten Objekten das nahegelegenste ausschließen? So Jun 27, 2010 9:09 pm
Na dann, globales Array oder Find_Or() verwenden. Also Find_Or(Find_ID(...), Find_ID(...), ...).
Array: Find_Object2(array, Find_Exclude(FindObject2(array, Sort_Distance())), Sort_Random()) Damit bekommst du direkt ein zufälliges rausgewürfelt, das nicht das nächstbeste ist. Wenn du die betreffenden Objekte im Array "array" einsortiert hast. Fänd ich die schönste Methode. Find_Or() wird ziemlich hässlich.
Gesponserte Inhalte
Thema: Re: Aus bestimmten Objekten das nahegelegenste ausschließen?
Aus bestimmten Objekten das nahegelegenste ausschließen?