Die Uhr in der Game-Engine

Damit die Uhr nicht nur mit einer Momentaufnahme zu sehen ist, wechseln wir für die Ausführung zur Game-Engine. Die Konfiguration erfolgt über den Logic-Editor der Game-Engine und ein neues Skript update.py. Damit kann mit der «Unruhe« die Zeit in Sekundentakt aktualisieren werden.

Hier das Script:

 1from bge import logic
 2from clock import get_time
 3
 4res = get_time()
 5scn = logic.getCurrentScene()
 6
 7colors = {
 8    "off": [.8, 0.8, 0.8, 1],
 9    "on": [1, .9, .1, 1],
10    "sec_even": [0, .7, .9, 1],
11    "sec_odd": [0, .5, .9, 1],
12    "quarter": [0, 1, 1, 1]
13}
14
15# for name in res.keys():
16#    ob = scn.objects[name]
17#    ob.color = [0, .7, .9, 1] \
18#        if res[name] else
19
20for name in res.keys():
21    ob = scn.objects[name]
22    ob.color = colors['on'] \
23        if res[name] else colors['off']
24    if name == 'seconds':
25        ob.color = colors['sec_even'] \
26        if res[name] else colors['sec_odd']
27    if name in ['minute_03', 'minute_06', 'minute_09']:
28        if res[name]:
29            ob.color = colors['quarter'] \
30                if res[name] else colors['off']

Das Skript nutzt die gleiche Technik, wie die letzte Material-Funktion. Beachte die Unterschiede:

  • Diesmal muss das Modul bge importiert werden.

  • Für Farbangaben muss auch der Alpha-Kanal angegeben werden, die Farbwerte bestehen also aus vier Werten.

Letzter Schritt: das Script mit der BGE (Blender Game Engine) verbinden.

  • die Kamera auswählen (re. Mausklick)

  • den Fenstertyp von „Python console“ zum „Logic Editor“ umstellen

  • hinzufügen: Always sensor

  • hinzufügen Python controller

  • das Skript update.py dem controller zuordnen

  • sensor und controller verbinden (drag & drop)

  • einstellen: Level triggering auf True

  • umstellen: Game Engine im Menü (siehe Blender Render)

  • Optional das 3D-Window maximieren (Ctrl+Pfeil)

  • Start der Uhr (game) mit dem Menü oder der Taste P im 3D-Fenster

../../../_images/berlin-clock-bge.png