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:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
from bge import logic
from clock import get_time

res = get_time()
scn = logic.getCurrentScene()

colors = {
    "off": [.8, 0.8, 0.8, 1],
    "on": [1, .9, .1, 1],
    "sec_even": [0, .7, .9, 1],
    "sec_odd": [0, .5, .9, 1],
    "quarter": [0, 1, 1, 1]
}

# for name in res.keys():
#    ob = scn.objects[name]
#    ob.color = [0, .7, .9, 1] \
#        if res[name] else

for name in res.keys():
    ob = scn.objects[name]
    ob.color = colors['on'] \
        if res[name] else colors['off']
    if name == 'seconds':
        ob.color = colors['sec_even'] \
        if res[name] else colors['sec_odd']
    if name in ['minute_03', 'minute_06', 'minute_09']:
        if res[name]:
            ob.color = colors['quarter'] \
                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