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
