Sonntag, 1. Januar 2012

Zone als Kreis

Fortschrittskurs „Zone als Kreis“

Voraussetzung: Einsteigerkurs

Als Eintritt in den Fortschrittskurs wollen wir uns nochmal mit der Definition von Zonen beschäftigen.
Im Einsteigerkurs haben wir unsere Zonen mit 4 Punkten abgesteckt und "On enter" implementiert.
Abbildung 1: Statt alle vier Ecken zu messen reicht es den Mittelpunkt und den Radius anzugeben
Bei dieser Vorgehensweise kommt es immer wieder zu Problemen im Spielablauf indem der Wherigo-Player entweder eine Ecke der Zone anvisiert um seinen Richtungspfeil auszurichten, oder der Wherigo-Builder aktualisiert den OriginalPoint der Zone, an dem sich viele Player orientieren, nicht wenn die Zone nachträglich verschoben wird.
Wenn man die Zone nicht genau abstecken muss und auch gut mit einem Kreis leben kann, so sparen wir uns die Mühe mehrere Punkte zu messen und bauen ein Minidreieck mit dreimal Kreismittelpunkt als Koordinaten.
Über "In proximity" lässt sich der Radius des Kreises bestimmen.
Anstatt sich „On enter“ zu bedienen wird der Programmablauf beim Erreichen einer Station in „On proximity“ definiert.
Wenn ihr Objekte in der Zone platzieren wollt, die dem Spieler angezeigt werden sollen, müsst ihr „Show Objects“ auf „On proximity“ umstellen.

Der Vorteil der Methode liegt auf der Hand: Der Spieler navigiert genau auf den Zonenmittelpunkt und als Cacheowner reicht es einen Punkt zu messen. Denn meistens möchte man den Spieler an einem bestimmten Punkt führen.
Als weiteren Nebeneffekt simuliert ihr Geschwindigkeit und reibungslosen Programmablauf, denn der Spieler erhält sehr genaue Angaben wo er hin laufen soll und das Ereignis tritt schneller ein als erwartet.
Das Verlassen der Zone muss mit "On distant" erfasst werden,
da unsere eigentlicht Zone nur aus einem Punkt besteht
„Noch 12 Meter ... noch 11 Meter ... 'Welche Zahl steht auf den Boden gemalt?' “

Fairerweise sollte nicht unerwähnt bleiben, dass diese Lösung auch Nachteile besitzt. Genauso wie „On enter“ steht auch auch „On exit“ nicht zur Verfügung, da die eigentliche Zone ja nur aus einem Punkt besteht.
Abhilfe kann da aber „On distant“ verschaffen. Dieses Ereignis stellt quasi das Gegenteil zu „On proximity“ dar und wird ausgelöst, wenn der Annäherungsbereich verlassen wird.
Aber auch hier steckt der Teufel im Detail, denn „On distant“ wird von den Playern auch beim Start des Cartridges ausgelöst.

Ob "On distant" ausgeführt wird, hängt von der Variable "GameOnStart" ab
Wir lösen dieses Problem mit einer Booleanvariable „GameOnStart“, die initial auf „True“ steht und beim Erreichen der ersten Zone auf „False“ gesetzt wird.

Beim Erreichen der ersten Zone wird "GameOnStart" auf "False" gesetzt
TEXT Im „On distant“ Block muss dann lediglich eine Überprüfung auf den „GameOnStart“ Wert stattfinden.
Man kann also die Kreisfunktion mit der „On distant“ Methode nutzen, evtl. ist aber ein traditionelles Vieleck als Zone mit „On exit“ Funktion einfacher zu implementieren.
Es kommt halt immer auf die Situation an.

Die urwigo Datei zu diesem Tutorial als Download

1 Kommentar:

  1. Leider ist auch URWIGO nicht intuitiv zu bedienen. Der Macht erst einmal einen besseren Eindruck als der Wherigo Builder von Groundspeak, der kann saeine eigenen abgespeicherten Projekte nicht wieder aufrufen, aber man verliert schnell den Überblick.
    Und eine IT Ausbildung möchte ich ja nun nicht auch noch absolvieren.

    Gruß, "Geobulli"

    AntwortenLöschen