I have set up a simple test map consisting of a slab of BSP, a
skylight, a playerstart, a skydome, and a directional light.
I will only be using default editor assets which can be found
in the EditorMeshes and EditorMaterials
packages.
I added a trigger to the map. The touch event generally does
not work on StaticMeshes, Interpactors, KActors, etc... I suspect
it has something to do with the pivotpoint/origin of the mesh
and not being able to touch it when it's inside the mesh. However,
using triggers is the most common application so it's best just
to use them anyways.
*Note: Triggers and trigger volumes have the same functionality.
One generally uses a volume rather than a trigger for two reasons:
The first is when a standard circular radius is not the shape
of the collision area needed. The second is when, for example,
you would need to fire the same event from two different locations
- two seperate doors. If they rest on the same plane, then instead
of using two triggers and two events, you could stretch one
trigger volume from one door all the way to the other. The only
caveat is to embedd the volume inside the geometry between them
so the player cannot trigger it by walking into the geometry.
SetUp: Select the Trigger (or a trigger volume)
in a viewport, and open Kismet. Right-Click anywhere and select
'New Event Using Trigger/TriggerVolume' -> Touch, as in the
screenshot below:
|
|
Now we have our Touch event. It will fire the 'Touch' when the
something enters the collision radius of the trigger. It will
fir ethe 'Untouch' when that same thing leaves the collision
radius. Let's look at some of the properties...
|
|
• bAllowDeadPawns will allow dead pawns to fire off the
touch event. Unchecked by default.
• bClientSideOnly will determine whether the touch event
will fire over the network. Unchecked by default, this allows
the event to fire across the network.
• bEnabled allows you to control if the event is active
by default, or turned on later using a toggle. Checked by default.
• ForceOverlapping will allow triggers to overlap and
therefore you can assign priorities to multiple touch events
based off overlapping triggers to fire at the same time. The
priority field below controls their order.
• bPlayerOnly will control if the touch originates only
from the player, or from anyone/thing in the level, for example
bots/NPCs.
• bUseInstigator. Instigators are somewhat difficult to
explain, but can be used to control exactly what/who is interacting
with the trigger. If there's a bot/NPC, for example, with a
specific object reference, and you want only that bot/NPC to
set off the event, then you can use an instigator attached to
the bottom of the event, and check this box off to tie it together.
This could also be used to control classes of actors that can
set off the event.
• ClassProximityTypes. By clicking on the grey area, and
then on the green ball to add a line, you can specify exactly
what actor classes are allowed to set off the event. The double
brackets will clear the fields.
• MaxTriggerCount controls the maximum amount of times
the event is allowed to fire. Remember, if you want 1 touch
and 1 untouch, then you'll need to set this to 2. 0 is infinite.
• Priority controls the sequence of event firings if there
are overlapping triggers.
• ReTriggerDelay controls how quickly the event can be
fired again. Generally .1 is the lowest you'll want to set it.
0 would be faster, but could also cause Kismet spam and should
be avoided.
Uses: There are practically infinite uses for
trigger touches. To open a door, or activate a lift, to turn
on or off a light or a particle, or determine if a player is
inside or outside an area, to stream in or out or load or unload
a sublevel, to spawn or destroy enemies, to set off a trap.
Your imagination is the limit.
|