Echtzeituhren

Uhren kann man unter Source entweder für realistische Atmosphäre oder zum Messen von Zeit nutzen. Es gibt zwei Arten von Uhren - die analoge und die digitale - doch welche man benutzt, hängt vom Setting ab. Es sei aber gesagt, dass man in eine Digitale Uhr mehr Arbeit stecken muss.

Die Analoge Uhr

Das Erstellen einer Analogen Uhr ist ziemlich einfach, wenn man Mathe kann.

Zuerst brauchen wir ein Ziffernblatt: Dazu kann man z.B. ein Photo mit 360g (oder einem anderem Programm/Verfahren) zu einer Textur konvertieren, ein bereits existierendes Model verwenden, ein neues selber machen, und,und,und…

Ich hab mir selbst eine dev-Textur gemacht:
dev_measureclock01.jpg

Jetzt noch ein paar Zeiger, die wir zu func_rotatings machen:

sdk_clock02.jpg

Flags

  • Start On (bei bedarf)
  • die Achse um die sich die Zeiger drehen sollen (X/Y/Z)
  • Not Solid
  • Reverse Direction (wenn sich die Zeiger falschrum drehen sollten

So…und nun die

Rechnung

Da wir ja wissen das sich der Sekundenzeiger mit einer Geschwindigkeit von 6°/sec dreht (=360°/60sec) -und der Minutenzeiger logischerweise 60 mal langsamer ist (0.1°/sec)(der Stundenzeiger dann 0.008333…°/sec, da 12 Stunden), haben wir jetz die Werte (°/sec):

  • Sekundenzeiger: 6
  • Minutenzeiger: 0.1
  • Stundenzeiger: 0.008333

Die tragen wir jetzt bei Max Rotation Speed bei den jeweiligen Zeigern ein, da wir ja ebenfalls wissen, dass der Wert die Umdrehung in °/sec angibt. Das wars.

(Dieses Tutorial kann übrigens auch auf HL1 angewandt werden)

[Beispielmap]

Die Digitale Uhr

Der Bau einer Digitalen Uhr zu beinhaltet ebenfalls ein wenig Rechenaufwand, lässt sich aber leicht umsetzen, wenn man erst einmal das Prinzip verstanden hat.

Die Idee hinter der folgenden Konstruktion ist, dass ein logic_timer konstant Sekunden hochzählt und bei jeder Sekunde unsere Sekundenanzeige um 1 erhöht. Hat er das zehnmal gemacht, erhöht sich die zweite Zahl um eins (dazu wird hier ein math_counter benutzt); hat die zweite Zahl sich wiederum sechsmal erhöht, erhöht sich Zahl drei dito. Diese Abhängigkeit voneinander ist übrigens notwendig; würde man einfach drei logic_timer die Zahlen erhöhen lassen, käme es zu Verschiebungen. Um die Texturen möglichst einfach handhaben zu können, erstellen wir die Zahlen als Togglebare materials.

Erstellen der Togglebaren Texturen

Gemäß Togglebare Texturen erstellen wir mit Paint.net oder einem vergleichbaren Programm eine Textur, die sich von 0-9 und eine, die sich von 0-5 durchschalten lässt.

Konstruktion

Nun müssen nur noch die Entities eingestellt werden.

Zahlen:

Jeweils ein func_wall, links und rechts mit der von 0-9 zählende Textur, in der Mitte mit der von 0-5 zählenden texturiert. Über jeder Zahl befindet sich ein env_texturetoggle, das als „Target Brush“ das jeweilige func_wall eingetragen hat.

Schaltung:
logic_timer:
Start Disabled: Yes
Refire interval: 1

„OnTimer: math_counter01 : add : 1“
„OnTimer: textoggle01 : incrementtextureindex“

math_counter#1:
Name: Math_Counter01
Maximum Legal Value: 10

„OnHitMax : !self : SetValue : 0“
„OnHitMax : math_counter02 : Add : 1“
„OnHitMax : texttoggle02: incrementtextureindex“

math_counter#2:
Name: Math_Counter02
Maximum Legal Value: 6

„OnHitMax : !self : SetValue : 0“
„OnHitMax : texttoggle03: incrementtextureindex“

Dazu kommt ein beliebiges auslösendes Entity, zB ein func_button. Die Schaltung wird gestartet, wenn der logic_timer Enabled wird und gestoppt, sobald er Disabled wird. Neu gestartet werden kann sie, indem die env_texturetoggle per SetTextureIndex ihre Textur auf 0 und die math_counter per SetValue ihren Wert auf 0 gesetzt bekommen.

[Beispielmap]

Die Verwendung aller Dokumente einschließlich der Abbildungen ausschließlich zu nichtkommerziellen Zwecken. Verbreitung des Dokuments auf Speichermedien, (insbesondere auf CD-ROMs als Beilage zu Zeitschriften und Magazinen oder sog. "Mission-Packs" etc.) ist untersagt.
 
half-life_2/tutorials/echtzeituhr.txt · Zuletzt geändert: 2011/05/25 12:30 von Adrian_Broher