Über Entity I/O togglebare Materials

Manchmal kann es praktisch sein, einen Button oder eine Textur auf Knopfdruck zu verändern oder bei einer bestimmten Aktion die Textur eines Brushes anzupassen. Das einfachste Beispiel ist ein Aufzug, bei dem die Stockwerk-Nummern angezeigt werden oder ein Button, der seine Textur ändert, sobald man diesen drückt.

Texturen erstellen

  • Als erstes benötigen wir die einzelnen Bilder als .TGA-Dateien. Dieser werden wie imemr unter
    ..\Steam\SteamApps\[UserName]\sourcesdk_content\[GameName]\materialsrc abgespeichert, allerdings durchnummeriert: Angefangen bei *001.TGA bis zur letzten Datei. Am Beispiel eines Aufzugs mit 4 Stockwerken erhält man folgende Dateien:
LiftSign001.tga
LiftSign002.tga
LiftSign003.tga
LiftSign004.tga
  • Im gleichen Verzeichnis erstellt man nun eine Textdatei genannt „LiftSign.txt“ mit folgendem Inhalt:
"startframe" "1"
"endframe" "4"
  • Statt nun die .TGA-Dateien auf vtex.exe zu ziehen, nehmen wir die Text-Datei. Dadurch entsteht unter
    ..\Steam\SteamApps\[UserName]\sourcesdk_content\[GameName]\[GameShortname]\materials eine .VTF-Datei, die alle 4 .TGA-Dateien enthält.
  • Nun müssen wir noch eine .VMT-Datei mit folgendem Inhalt definieren:
"LightmappedGeneric"
{
  "$baseTexture" "LiftSign"
  "$surfaceprop" "metal"
    "Proxies"
    {
      "ToggleTexture"
      {
        "toggleTextureVar" "$baseTexture"
        "toggleTextureFrameNumVar" "$frame"
      }
    }
}

Entities in Hammer

Nachdem wir das Material erstellt haben, können wir es bereits im Hammer verwenden. Allerdings tut sich noch nicht allzu viel, wenn wir uns die Map anschauen. Daher müssen nun einige Entities erstellt werden. Folgendes wird benötigt:

  • env_texturetoggle, welches die Textur ändert
  • func_brush, auf dem die Textur angewendet wird. Dies kann auch ein func_button oder etwas ähnliches sein, hauptsache es hat einen Namen.
  • func_button oder ähnliches, das den Wechsel der Textur auslöst. Dies kann auch der func_button auf dem die Textur liegt selbst sein.

Um das ganze etwas einfacher zu erklären, wird hier nur ein func_button und ein env_texturetoggle erklärt. Alle weiteren funktionieren entsprechend genauso:

  • Als erstes erstellen wir das env_texturetoggle und geben ihm den Namen „LiftSignTexToggle“ (oder einen beliebigen anderen). Unter Target Brush geben wir den Namen des Ziel-Entities mit unserem Material ein (in diesem Fall der Button „LiftSign“).
  • Als nächstes erstellen wir einen func_button mit unserer Textur und geben ihm den Namen „LiftSign“ (wieder beliebig). Im func_button stellen wir unter Outputs folgendes ein:
Output Target Entity Target Input Parameter Delay
OnPressed „LiftSignTexToggle“ SetTextureIndex 2 0.00


Dies bedeutet: Beim drücken des Buttons wird unser env_texturetoggle getriggert und gibt unserem Button automatisch die Textur mit dem Index „2“.

Achtung: Der TexturenIndex fängt bei „0“ an, das heisst in diesem Beispiel wären die Indizes 0,1,2 und 3 möglich.

Alle weiteren Texturenindizes könnten über weitere func_buttons oder z.B. durch einen path_track bei OnPass getriggert werden. Lasst Euch was einfallen!

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/togglebare_materials.txt · Zuletzt geändert: 2009/11/27 22:16 von Adrian_Broher