How to create a func ut train
Contents
The basics
I think func_ut_train is a very interesting topic, but when you search it in the internet, you can't find much useful infos about it.
So I decided to write a tutorial about it.
First, here is a picture displaying the structure of a func_ut_train:
- 1) trigger_always
The "trigger_always" fires at "target_delay".
- 2) target_delay
"target_delay" fires at our "func_ut_train".
- 3) func_ut_train
This is our moving train.
You must give your "func_ut_train" an "ID", otherwise it will not work.
You must set "spawnflags" to "1", this means that it will start moving when the map starts.
- 4) our first path_ut_stop
This is the starting point of our Train.
I have set in this case the "targetname" to "1_0".
Our next stop is this case 1_1, so I set "target" to "1_1".
The "trainID" is very important. If you do not set a trainID, your train will not move.
- 5) our second path_ut_stop
The "targetname" is "1_1".
The "target" is set to "1_2".
Like in the first "path_ut_stop", you must not forget the "trainID".
- 6) our last path_ut_stop
The "targetname" is set to "1_2".
The "target" is "1_0".
And do not forget the "trainID".
Additional comments from KittyWumpus
More than one func_ut_train are possible
The key is in setting:
- targetname - sameforall
And then using:
- id - different
Explained
I have not had time to test, but so far I have found that if you assign the same |targetname| variable to every func_ut_train, and then assign a unique (first 8 characters at least???) |id| to each of those, then the |id| designation allows each func_ut_train to operate independently.
What I am unsure of
Initially, based upon info from the most awesome SleepingGuy, I had a |targetname|zeppelin| and then |id|airship1 and |id|airship2. This did NOT work. As soon as I simplified this to an: |id|1 and |id|2 , walla! Two independent func_ut_train. I am utilizing this in a map I am working on now, and it gets "dj'd" into our FSK405 CTF map rotation as I revise/fix/progress.
Further
func_ut_train is actually quite simple (thx again to SleepingGuy!!)
- Create a brush, texture as |origin|.
- Create a second brush, texture how you like.
- Select both, |func_ut_train| them.
- Assign |targetname| to your func_ut_train.
- Assign identical |targetname| to ALL |func_ut_train| in your map, if more than one is desired.
- Assign a unique |id| to each |func_ut_train| you want to operate uniquely. (be sure each has at least one brush, and one origin minimum)
- Assign |speed| if desired.
- Assign |target| to first |path_ut_stop| for this unique |id|; repeat for each.
- Create your |path_ut_stop| entities, be sure they target each subsequent, unique |trainid| assigned stops, with the final |target| assigned to first stop of that unique |trainid|
(NOTE: |trainid| is the reference to the |id| of a specific |func_ut_train|.. similar to |target| and |targetname|)
EVEN further!
Yes, you MAY use |yawspeed| |pitchspeed| and |rollspeed| with the |rotationtime| and |speed| variables!! Your |func_ut_train| WILL be capable of turning, pitching and rolling! This can seem complex at first, and I have not had time to create a nice tutorial to explain how... for now, simple experimentation.