|
Common Interactives - Ambient/Looping Mover
|
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 will be using Movers/Interpactors (the terms are interchangeable)
that are sometimes animated through Matinee. If you need to
learn Matinee, I would recommend Hourences'
Tutorial on them as a starting point.
I added the default mesh cube as a static mesh to the map, converted
it to an interpactor, and then made it tall but thin in the
XY directions and then duplicated it. The pivot is in the center
so I will only animate it up and down, or side to side. Something
turning on a hinge requires both a pivot on one side of it,
and some forethought to where the player will be so as not to
interfere with them.
*Note: Pivots/Origin points on StaticMeshes serve as the 'hinge
points' or centers of rotation/revolution for interpactors.
If you need to create a door, or other moveable object that
revolves, rotates, or swings on an edge, you'll need to be aware
of the mesh's pivot/origin location. It is impossible to re-assign
this pivot permanently in the engine. For mesh placement, you
can currently temporarily assign the pivot to a new location,
but when you're done, the pivot will be back at the origin.
If you find a mesh that you want to use as a swinging door,
and its pivot is in the center, you are out of luck. The origin
is determined when the mesh is created in a 3D Modeling application
- not in the Unreal Editor.
Ambient/Looping Effects: Well, we have many
many options to choose from. What exactly do you want to make?
I urge you to decide what you want before trying to set up anything.
We'll try to cover many different things but generally these
all can be combined and intertwined to create varied and interesting
effects.
Pistons that uniformly move up and down: Let's use
the 'Cooking' analogy I outlined in the Applications
introduction to set this up:
*Note: This particular looping system is also available at Hourence's
Tutorials site. If you are already familiar with it, you
can skip to the next looping system if you like.
1) What are we making? A pumping machine for the background,
with steam emitters and sounds.
2) Gather the ingredients:
2 Movers
2 Matinees
2 Emitters
4 PlaySound
Actions
LevelStartUp
Event
3) Put it together. In the level, I've created two walls and
a gap between them. I've created two tall thinnish movers and
added two emitters - one to the top of one mover, and one to
the bottom.
|
|
On the kismet side of things, I'll start with a Level Startup
event so that it runs as soon as the level starts. Depending
on the engine, this may need to be some other starting even
or, in the case of sub-levels streamed in, a Level Loaded and
Visible Event. Then I'll add my two matinees - one for a pump
starting down, moving up, and back and the other starting up,
moving down and back. In the mover group I set the movement
to 'Relative To Initial' in case I want to keep the movement,
but move the pumps later. I also set the matinee properties
to rewind on play. After I keyframed the movement - a simple
system of two keys, one for the start and one for the opposite
location, I set up the looping. When the matinee is complete,
I tell it to reverse itself, as seen below. When the reverse
is complete, the matinee is back at its beginning keyframe at
0 time - since this is not its end time, and yet it must stop,
the matinee considers its movement as having been aborted. So
I use the aborted output and plug it back into play to loop
the system. Then I add two events to the matinee to control
the sounds and emtters. I add toggles to turn on the emitters,
and I add play sounds for the sound of the pumps going up and
down. In the screenshot I'm using PSound02 as an emitter sound
and PSound01 as the pump sound. Remember to turn off the emitters
by default: in the emitter's properties turn off 'autoactivate'.
|
|
4) Test it. Go in game and test it out. It worked fine for me.
5) Refine it. First, think about the collision and lighting
and get those fixed. Then consider any potential issues involving
player interaction, weapon interaction, etc. Since I'm targeting
this toward being a background effect, I would probably just
place a blocking volume around it so the player never touches
it.
Now that the basics are set up, you could go crazy and add lights, more emitters, a pause in the effect, almost anything.
6) Adjust it for Single/Multiplayer. As you may have read in
the SinglePlayer/Co-op/MultiPlayer
section, there are many considerations to take into account
for whichever system you're setting this up for. The system
as it stands might be ok for single-player and multiplayer both.
Now say you wanted to create the same system, but you didn't
want uniform movement during the loop - in other words, you
want the 'going up' to behave differently than the 'going down'
part of the matinee. With the system we have so far, we can't
do that since the matinee is on a straight-up reverse.
We can construct the matinee a little differently and yet loop
it to achieve the desired result.
Pistons that irregularly move up and down: Let's use
the 'Cooking' analogy I outlined in the Applications
introduction to set this up:
1) What are we making? A pumping machine for the background,
with steam emitters and sounds.
2) Gather the ingredients. We'll need two movers, two matinees
to control the movers, two emitters, and at least two sounds,
but I'm choosing four.
3) Put it together. In the level, I've created two walls and
a gap between them. I've created two tall thinnish movers and
added two emitters - one to the top of one mover, and one to
the bottom.
|
|
On the kismet side of things, I'll start with a Level Startup
event so that it runs as soon as the level starts. Depending
on the engine, this may need to be some other starting even
or, in the case of sub-levels streamed in, a Level Loaded and
Visible Event. Then I'll add my two matinees - one for a pump
starting down, moving up, and back and the other starting up,
moving down and back. In the mover group I set the movement
to 'Relative To Initial' in case I want to keep the movement,
but move the pumps later. I also set the matinee properties
to rewind on play. I add toggles to turn on the emitters, and
I add play sounds for the sound of the pumps going up and down.
In the screenshot I'm using PSound02 as an emitter sound and
PSound01 as the pump sound. Remember to turn off the emitters
by default: in the emitter's properties turn off 'autoactivate'.
Now, in the matinees, I keyframe the 'going up movement and
going down movement with separate keyframes. In this circumstance,
the last keyframe of the matinee must match the same location/rotation
as the first keyframe. Once I have my movement keyframed, I
turn on 'RewindOnPlay' and 'Looping' in the matinees properties.
Now my matinees will loop with different behaviors on the 'up'
and on the 'down' and I no longer need to loop the completed
to the reverse and aborted to play.
|
|
4) Test it. Go in game and test it out. It worked fine for me.
5) Refine it. First, think about the collision and lighting
and get those fixed. Then consider any potential issues involving
player interaction, weapon interaction, etc. Since I'm targeting
this toward being a background effect, I would probably just
place a blocking volume around it so the player never touches
it.
Now that the basics are set up, you could go crazy and add lights, more emitters, a pause in the effect, almost anything.
6) Adjust it for Single/Multiplayer. As you may have read in
the SinglePlayer/Co-op/MultiPlayer
section, there are many considerations to take into account
for whichever system you're setting this up for. The system
as it stands might be ok for single-player and multiplayer both.
|
|
|
|
|
|