Blender - Handbuch zur Spiel-Engine: Sensoren

Aus Wikibooks


Diese Seite bezieht sich auf Blender v2.49

Wie der Name schon sagt, sind die Sensoren für den sensorischen Teil zuständig, sprich für die Aufnahme von Ereignissen (Events) jeglicher Art. Es gibt in Blender zwei Möglichkeiten Sensoren zu verwenden:

  • Logic Brick System. Man kann Sensoren über Controller direkt mit dem Logic Brick System an Aktuatoren laufen lassen. Für den Anfang ist diese Methode völlig ausreichend. Auch später wird man das hin und wieder machen, doch hat diese Methode zwei Nachteile: Erstens wird dieses System äußerst schnell unübersichtlich und komplex und zweitens, hat man damit lang nicht so viele Möglichkeiten wie mit
  • Python. Diese zweite Option ist eigentlich keine weitere Option, sondern eine Art Erweiterung für die Logic Bricks. Hierbei werden die relevanten Sensoren an einen Python Controller angebracht, ebenso wie alle relevanten Aktuatoren (bei Python meistens nur einer oder auch gar keiner). Das Python-Script holt sich alle Sensorinformationen, verarbeitet diese Miteinander, und gibt falls möglich/ nötig Befehle an den Aktuator.


Struktur[Bearbeiten]

Schauen wir uns zunächst einmal an, wie ein solcher Sensor aufgebaut ist. Klickt dazu einfach auf den Add Button im Bereich Sensors. Ihr müsstet nun das sehen können:

Screenshot

Zunächst schauen wir auf die Kopfleiste des erschienenen Sensors: Das Kreuz auf der linken Seite dient zum Entfernen des Sensors. Probiert es aus! Ein Klick auf Add und er ist wieder da. Wie ihr seht, wird der Sensor ohne Nachfrage gelöscht, also solltet ihr vorsichtig sein.

    Kommentar des Autors: Ihr fragt euch vielleicht "Glaubt der ich bin ein Kleinkind und seh nicht, wofür das Kreuz da ist?" Und nicht ganz zu Unrecht. Aber es gibt immer Leute, die ein wenig begriffstutzig sind, und jeder kann mal einen schwachen Moment haben. Und bevor ich zu wenig erkläre, und keiner mehr mitkommt, mache ich es lieber ausführlich.

Eins weiter rechts findet ihr ein Drop Down Menu. Hier könnt ihr den Sensortyp einstellen. Die verschiedenen Sensoren sind im Anschluss ausführlich beschrieben. Die Standardeinstellung ist der sogn. "Always" Sensor. Daneben befindet sich das Namensfeld. Werden die LBs nicht eigens benannt, so werden diese durchnummeriert. Fügt ihr einen weiteren Sensor hinzu, so wird dieser "sensor1" heißen. Ein Klick mit der linken Maustaste auf dieses Textfeld, und ihr könnt dem Sensor einen Namen geben. Klickt ihr wieder auf eine freie Fläche, oder drückt ihr auf Eingabe, wird der Name bestätigt. Der Name kann relevant sein, wenn ihr einmal mit Python arbeitet. Klug ist es, wenn ihr euren LBs charakteristische Namen gebt, die sie gut beschreiben, da ihr dann bei komplexeren Logic Bricks besser den Überblick behaltet (und die Logic Bricks werden auch mit Python kompliziert) Das kleine Dreieck ganz rechts schließlich ist mal wieder ein Button, der zur Übersichtlichkeit beiträgt. ist er Deaktiviert, kann man nur noch die Kopfleiste des Sensors sehen, diese aber nicht bearbeiten. Klickt man auf die Kopfzeile, erscheint ein Menu mit zwei Optionen: Move up und Move down, was sich auf die Reihenfolge der Sensoren bezieht. Ein erneuter Klick auf das Dreieck, und der Logic Brick ist wieder geöffnet.

In der nächsten Zeile befinden sich zwei Buttons. Einer mit drei Punkten oben, der ist aktiviert, und einer mit drei Punkten unten, der ist deaktiviert. Rechts daneben ist ein Feld f:, dessen Wert im Moment 0 ist. Diese drei sind zuständig für die so genannten "Pulse Modes".

Ein Sensor der aktiviert wird (Ereignis findet statt, zB. Tastendruck) gibt ein Signal ("Ich wurde aktiviert") weiter, man sagt er "feuert". Wird er wieder deaktiviert, gibt er wieder ein Signal, diesmal aber dass er deaktiviert wurde. Die erste Zeile dieser Grafik verdeutlicht das:

Pulse Modes

Erst ist der Sensor nicht aktiviert (untere Linie), dann ist der Sensor aktiviert (obere Linie) und feuert in dem Moment in dem er aktiviert wird. Dann ist er wieder deaktiviert, und feuert in dem Moment, dass er deaktiviert wurde. Das ist aber alles nur der Fall, wenn keiner der beiden ersten Buttons aktiv ist. Doch was machen die beiden Buttons? Die folgenden drei Zeilen der Grafik zeigen es bereits: Ist ein Pulse Mode aktiviert, so wird in dem jeweiligen Zustand die ganze Zeit gefeuert, je nachdem, ob der Positive Pulse Mode (drei Punkte oben) oder der Negative Pulse Mode (drei Punkte unten) aktiviert wurde. Das ist natürlich auch kombinierbar, wie die letzte Zeile der Grafik zeigt. Doch was ist nun f:?
Ist einer oder sind beide Pulse Modes aktiviert, und f: ist 0, dann sind die Abstände zwischen den Signalen 0. Null was? Null Logic Tics. Die gesamten Logic Bricks werden jeden Logic Tic wieder durchgegangen, ist der Computer damit fertig, beginnt der nächste Logic Tic. Faktisch feuert der Sensor immerzu. f: drückt nun den Abstand in Logic Tics zwischen den Signalen aus. Ist als f: auf 10 eingestellt, So feuert der Sensor, und erst beim elften Logic Tic danach feuert er wieder (was immernoch verhältnismäßig kurz ist). Nun fragt ihr euch vielleicht: "Wozu überhaupt der ganze Quatsch mit Pulse Modes und Abständen, wieso feuert nicht jeder Sensor einfach die ganze Zeit?" Diese Frage ist mit einem Wort leicht zu beantworten: Performance. Und das ist auch, was die Pulse Modes zu einem gefährlichen Spielzeug macht. Die Blender GE ist leider kein großes Ass was Geschwindigkeit angeht. Daher sollte man bei allem möglichst viel Performance einsparen. Und das Arbeitsaufwändigste überhaupt sind die Pulse Modes. Daher gilt:

Merke:

Bevor man Pulsemodes an einem Sensor aktiviert, immer zuerst ohne ausprobieren! Und:

Wenn man Pulsemodes benutzt, immer überlegen, ob es nicht mit einem Abstand zwischen den Signalen auch reicht!

Der Inv-Button schließlich invertiert die abgegebenen Signale des Sensors, das heißt aus Positiven Pulses werden Negative und umgekehrt.

Typen[Bearbeiten]

Always Sensor[Bearbeiten]

Der Always-Sensor ist der simpelste Sensor. Er dient nur dazu in regelmäßigen Abständen Signale abzugeben. (siehe oben)

Delay Sensor[Bearbeiten]

Der Delay Sensor sendet, wenn die eingegebene Zeit abgelaufen ist, das Signal weiter. Del: 60 = 1 Sekunde

Keyboard Sensor[Bearbeiten]

Der Keyboard Sensor ist sicher einer der meistgenutzten Sensoren. Er stellt die Schnittstelle zwischen Blender und dem Benutzer dar, genauer gesagt zwischen der Tastatur und Blender, Mauseingaben werden mit einem Mouse-Sensor behandelt.

Key: Hier wird die Taste eingetragen, auf die der Sensor reagieren d.h. feuern soll. Einfach in das Feld klicken und die entsprechende Taste drücken.
All Keys: Ist dieser Button aktiviert feuert der Sensor bei jeder Taste.
Hold: Hier können Modifier eingetragen werden, also Tasten die zusätzlich zu Key gedrückt sein müssen, wie z.B. Strg oder Alt.

Mouse Sensor[Bearbeiten]

Der Mouse-Sensor nimmt alle Eingaben der Maus entgegen, seien es Bewegungen oder Tastendrücke. Mit dem Drop-Down Menü kann bestimmt werden, worauf reagiert werden soll:

Left Button: Feuert bei Druck der linken Maustaste.
Middle Button: Feuert bei Druck der mittleren Maustaste.
Right Button: Feuert bei Druck der rechten Maustaste.
Wheel Up: Feuert bei Drehen des Mausrades nach oben.
Wheel Down: Feuert bei Drehen des Mausrades nach unten.
Movement: Feuert sobald die Maus bewegt wird.
Mouse Over: Feuert wenn sich der Maus-Cursor über dem Objekt befindet, dem der Sensor zugeordnet ist.
Mouse Over Any: Feuert wenn sich die Maus über einem Objekt befindet.

Touch Sensor[Bearbeiten]

Der Touch Sensor reagiert, wenn das Objekt ein bestimmtes Material berührt.
Das Material auf das reagiert werden soll kann unter MA: eingetragen werden, bleibt dieses Feld leer feuert der Sensor bei jeder Berührung.

Collision Sensor[Bearbeiten]

Der Collision-Sensor ist generell dazu da, um auf Berührungen zwischen Objekten zu reagieren.
Dabei kann bestimmt werden, ob der Sensor auf ein Material oder auf eine Property reagieren soll. Zum Umschalten zwischen diesen Möglichkeiten dient der M/P-Button. Soll der Sensor nur feuern, wenn ein Objekt mit einer bestimmten Property berührt wird, so ist diese Property unter Property: einzutragen. Soll er auf ein Material reagieren, verhält er sich im Grunde wie ein Touch-Sensor.

Near Sensor[Bearbeiten]

Der Near-Sensor reagiert auf Actoren, die sich in einem bestimmten Bereich um das Objekt befinden.
Bleibt das Property: Feld leer, so reagiert der Sensor auf alle Actoren in einem bestimmten Umkreis. Ist eine Property in diesem Feld eingetragen, so feuert er nur, wenn ein Actor mit dieser Property in der Nähe ist.

Dist: Hier wird der Radius (in Blender-Einheiten) der Kugel eingetragen, in der auf Actoren reagiert wird.
Reset: Hier wird eingetragen, wie weit ein Actor sich wieder entfernt haben muss, bevor der Sensor aufhört zu feuern.

Radar Sensor[Bearbeiten]

Der Radar-Sensor verhält sich wie ein richtiger Radar und hält nach Objekten Ausschau, die sich entlang der unter X Y Z angegeben Achse befinden.
Falls unter Prop: eine Property angegeben ist, reagiert der Sensor nur auf diese, sonst auf alle Actoren.

Ang: Gibt den Öffnungswinkel für den Radar an. Vergleichbar mit dem Öffnungswinkel einer Kamera.
Dist: Gibt an wie weit der Sensor "sehen" kann.

Achtung: Der Radar-Sensor kann durch Wände sehen, im Gegensatz zum Ray-Sensor!

Property Sensor[Bearbeiten]

Der Property-Sensor überprüft eine Property, die dem selben Objekt zugeordnet ist.

Equal: Feuert immer, wenn die unter Prop: eingetragene Property mit Value: übereinstimmt.
Not Equal: Feuert immer, wenn die unter Prop: eingetragene Property mit Value: nicht übereinstimmt.
Interval: Feuert immer, wenn die unter Prop: eingetragene Property im Bereich zwischen Min: und Max: liegt.
Changed: Feuert immer, wenn die unter Prop: eingetragene Property sich ändert.

Für die Überprüfung von Timer-Properties (z.B. 1337.000) sollte man immer einen Property-Sensor vom Typ "Interval" verwenden, da diese Properties sich schneller ändern als Sensoren überprüft werden und genauer sind als der Property-Sensor vom Typ "Equal".

Random Sensor[Bearbeiten]

Der Random Sensor feuert zufällig Signale, je nach eingestelltem Pulse Mode.
Seed ist hierbei ein Zufallsfaktor, bei Seed:0 wird die Systemzeit als Seed verwendet, wodurch die Zufälligkeit noch unvorhersehbarer wird. Gleiche Seed-Werte ergeben eine gleiche Abfolge von Logic-Pulsen (außer bei Seed:0).

Ray Sensor[Bearbeiten]

Der Ray-Sensor schickt einen Strahl, gemäß der unter Range eingestellten Entfernung. Mit dem Drop-Down Menü daneben kann noch die Achse eingestellt werden, entlang derer der Strahl geschickt wird. Hierbei kann auf ein Material oder eine Property reagiert werden (siehe Collision-Sensor).

Achtung: Der Ray-Sensor kann nicht durch Wände sehen (standardmäßig, wenn man nicht den "X-Ray"-Modus aktiviert), im Gegensatz zum Radar-Sensor!

Message Sensor[Bearbeiten]

Hiermit kann auf Nachrichten des Message-Actuators reagiert werden. Und weiter verarbeitet werden

Joystick Sensor[Bearbeiten]

Actuator Sensor[Bearbeiten]

<<<Zurück

Struktur der Logic Bricks

Inhaltsverzeichnis
Glossar
Weiter>>>

Controller