====== 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: \\ {{half-life_2:tutorials:echtzeituhr:dev_measureclock01.jpg}} \\ Jetzt noch ein paar Zeiger, die wir zu [[source:entities:func_rotating]]s machen: {{half-life_2:tutorials:echtzeituhr: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) {{half-life_2:tutorials:echtzeituhr:sdk_clock.zip|[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 [[source:entities: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 [[half-life_2:entities:math_counter]] benutzt); hat die zweite Zahl sich wiederum sechsmal erhöht, erhöht sich Zahl drei [[half-life_2:entities:math_counter|dito]]. Diese Abhängigkeit voneinander ist übrigens notwendig; würde man einfach drei [[source:entities: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äß [[half-life_2:tutorials:togglebare_materials|Togglebare Texturen]] erstellen wir mit [[http://www.getpaint.net/download.html|Paint.net]] oder einem vergleichbaren Programm eine Textur, die sich von 0-9 und eine, die sich von 0-5 durchschalten lässt. {{:half-life_2:tutorials:echtzeituhr:digitaluhr.png}} ==== Konstruktion ==== Nun müssen nur noch die Entities eingestellt werden. **Zahlen:** Jeweils ein [[source:entities: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 [[source:entities:env_texturetoggle]], das als "Target Brush" das jeweilige [[source:entities:func_wall]] eingetragen hat. **Schaltung:**\\ [[source:entities:logic_timer]]:\\ Start Disabled: Yes\\ Refire interval: 1\\ \\ //"OnTimer: math_counter01 : add : 1"\\ "OnTimer: textoggle01 : incrementtextureindex"// \\ [[half-life_2:entities:math_counter]]#1:\\ Name: Math_Counter01\\ Maximum Legal Value: 10\\ \\ //"OnHitMax : !self : SetValue : 0"\\ "OnHitMax : math_counter02 : Add : 1"\\ "OnHitMax : texttoggle02: incrementtextureindex"// \\ [[half-life_2:entities: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 [[source:entities:func_button]]. Die Schaltung wird gestartet, wenn der [[source:entities:logic_timer]] Enabled wird und gestoppt, sobald er Disabled wird. Neu gestartet werden kann sie, indem die [[source:entities:env_texturetoggle]] per SetTextureIndex ihre Textur auf 0 und die [[half-life_2:entities:math_counter]] per SetValue ihren Wert auf 0 gesetzt bekommen.\\ {{half-life_2:tutorials:echtzeituhr:dev_digitaluhr.rar|[Beispielmap]}}