- 
	
	
		
			
			
			
			
				
			
			
				Deus
			
			
			
				
			
			
			 
			
				
				
				
				
			
		 
		
			
				
				
						
						
				
					
						
							Gibt es für den 2K echt ein Pathfinding-Script, das in Echtzeit performant (unabhängig von Mapgröße und Anzahl der Events) läuft?
Es ist natürlich möglich, die Step-Toward-Hero-Methode so umzuschreiben, dass aus ihr ein Step-Toward-Event (oder in deinem Fall Feld) wird. Dabei muss man aber mit den gleichen Schwächen leben, die Figur kann also an der Wand hängen bleiben. Alternativ könntest du eine Methode schreiben, die an den Mapaufbau angepasst ist. Du weißt ja wo sich alle Hindernisse befinden. Die Wache müsste also abhängig von ihrer Position immer einen Weg wählen, der an allen Hindernissen vorbei führt. Das sollte nicht zu kompliziert sein, es sei denn es gibt zu viel blockierenden Kleinkram.
						
					 
					
				 
			 
			
			
		 
	 
		
	
 
- 
	
	
		
			
			
			
			
				
			
			
				Neuling
			
			
			
				
			
			
			 
			
				
				
				
				
			
		 
		
			
				
				
						
						
				
					
						
							Erstmal vielen Dank für eure schnelle und kompetente Hilfe!
Was Plugins angeht, stimme ich eher TrueMG zu, schließlich macht es Spaß, mit den Gegebenheiten und dementsprechend auch den Limitierungen des Makers scheinbar "unmögliche" Dinge zu schaffen - zumindest mir. Nur im Notfall würde ich Plug-Ins verwenden, wenn ich wirklich hoffnugslos bin und selbst ihr keinen besseren Rat wisst. Dein Link, Kazesui, ist zwar interessant, doch trifft er halt nicht ganz die Richtung und ist, wie Du bereits angedeutet hast, viel zu kompliziert. Und TrueMG: Ganz genau, ich meinte "If NPC/ Event Moves". 
Mit dem Maker 2k3 bin ich sehr zufrieden, da habe ich eigentlich weder Zwang noch Lust zum Vorgänger zu wechseln, auch wenn MagicMakers Idee sicherlich für 2k funktionieren würde. Vom Umschreiben habe ich überhaupt keine Ahnung, tut mir Leid, Kelven.
Aber ich hoffe ihr seid nicht enttäuscht, dass ich durch Kelvens Ansatz (Anpassung an die Map) und TrueMGs möglichen Befehle eine eigene Idee entwickelt habe, die sogar funktioniert - ich erstaune mich immer wieder selbst:
Erstmal habe ich ein paralleles Common Event erstellt ("Gegnerstandort"), ausgelöst durch einen Switch (z.B. einen, der angeht, wenn die Map mit den Wachen betreten wird und ausgeht, wenn die Map verlassen wird):
Da drin sind zwei Variablen, die den momentanen Koordinaten der Wache entsprechen, also Set Variable "X Pos" equal to Sprite "Wache" X-Coordinate und dasselbe nochmal mit der Y-Koordinate. Da die Anfangsposition - zu der die Wache auch zurück soll - auf (7,3) liegt, habe ich die Variable "X-Pos" minus 7 gerechnet und die Variable "Y-Pos" minus 3.
Zweites paralleles Common Event ("Wegerkennung X"), welches durch einen Schalter ausgelöst wird, der angeht, wenn sich die Wache auf den Rückweg machen soll:
Wenn die Variable "X-Pos" größer als 0 ist, soll er sich nach links bewegen. Ist sie kleiner als 0, nach rechts. Ist sie gleich null, soll ein Schalter angehen: "Wegerkennung X fertig".
Drittes paralleles CE ("Wegerkennung Y"), getriggert durch "Wegerkennung X fertig":
Wenn die Variable "Y-Pos" größer als 0 ist, soll er sich nach unten bewegen. Ist sie kleiner als 0, nach oben. Ist sie gleich null, soll die Wache nach unten gucken, und dann werden alle Schalter wieder auf aus gestellt.
Fertig. Klappt, sieht anständig aus und ich brauche keine Timings mit Wait-Befehlen - ich weiß, in jedem parallelen Event sollte eigentlich ein "0.0 Wait" sein, aber den lasse ich hier mal getrost weg. Ich hoffe mal, dass dies jemandem nützt, der dasselbe Problem hat. Aber ohne Gedankenstöße eurerseits wäre das nicht möglich gewesen. Vielen Dank!
Soll ich noch in den Titel schreiben, dass es gelöst wurden? Manche Foren wollen das ja gerne.
-----------------------------------------------------------------------------------
Edit: Das eigentliche Problem ist gelöst, nur frage ich mich nun, wie ich es hinbekomme, dass er während des Zurückgehens abfragt, ob der Held nah an ihm dran ist und somit die Verfolgung wieder aufnimmt. Mein Versuch war es, jeweils vor einem Move Event durch Conditional Branches den Abstand zum Helden zu erfragen und falls der Held nah dran sei, so soll ein Schalter betätigt werden, der die Wache wieder zur Verfolgung animiert. Das Dumme daran ist nur, dass die Wache stur bei der Sache bleibt, getreu ihrem Motto: "Wenn ich zurücklaufe, laufe ich zurück. Basta."
Falls jemand spontane Ideen bzw. Hilfestellungen hat - her damit, bitte! Ich probiere indes noch weitere Dinge aus, doch glaube ich kaum, dass die funktionieren werden.
						
					 
					
				 
			 
			
			
                            
				
				
                                        
				
				
				
					
					
						Geändert von Phantomias (15.08.2012 um 20:06 Uhr)
					
					
					
				
				
				
			 
			
			
		 
	 
		
	
 
- 
	
	
		
			
			
			
			
				
			
			
				Ritter
			
			
			
				
			
			
			 
			
				
				
				
				
			
		 
		
			
				
				
						
						
				
					
						
							Du könntest ja ein Parallel Event mit zwei Branches machen. Bei Betreten der Map solltest du erstmal die Ursprungsposition des Helden in zwei Variablen speichern. Am Anfang des Events wird dann grundsätzlich immer die Entfernung vor Urpsurngspunkt zum Helden gemessen. Ist er zu weit weg, springst du zum ersten Zweig: Ursprungsposition ansteuern (hierzu benötigst du die vorher gespeicherten Variablen). Ist er nahe genug, springst du zum zweiten Zweig: Dem Helden nähern. Um zu gewährleisten, dass das Skript auch stets aktiv ist, solltest du dabei die pro Move Event maximal einen Schritt machen, da Move Events ja Zeit in Anspruch nehmen. Ich kann dir allerdings nicht versprechen, dass das auch wirklich flüssig läuft. Ich kann mir vorstellen, dass die Wache dann nach jedem Schritt erstmal eine kurze (aber bemerkbare) Pause einlegt. Kommt drauf an, wie der Maker arbeitet. Man müsste es halt ausprobieren. Mit längeren Move Events (bzw. Move Event-Schleifen) sehe ich aber keine Möglichkeit, dieses Skript dauerhaft aktiv zu halten. Das kann nur mit Skripts funktionieren, die jede Frame ausgeführt werden.
						
					 
					
				 
			 
			
			
			
			
		 
	 
		
	
 
- 
	
	
		
			
			
			
			
				
			
			
				Neuling
			
			
			
				
			
			
			 
			
				
				
				
				
			
		 
		
			
				
				
						
						
				
					
						
							Hab nach jedem Schritt ein Call Event eingesetzt und genau dieses Event fragt ab, ob der Held in der Nähe der Wache ist. Und wenn dies der Fall ist, werden die nötigen Schalter abgeschaltet (sprich: der Rückweg wird abgebrochen). Läuft flüssig, für meine Ansprüche reicht es jedenfalls. Ist praktisch deine Idee, schließlich wechsel ich damit auch zwischen "Ursprungsposition ansteuern" und "Rückweg" hin und her. Danke!
						
					 
					
				 
			 
			
			
		 
	 
		
	
 
		
		
		
	
 
	
	
	
	
	
	
	
	
	
	
	
	Stichworte
	
	
	
		
		
			
				
				Berechtigungen
			
			
				
	
		- Neue Themen erstellen: Nein
 
		- Themen beantworten: Nein
 
		- Anhänge hochladen: Nein
 
		- Beiträge bearbeiten: Nein
 
		-  
 
	
	
	Foren-Regeln