Cyclones

by: DaveA
Dave_Arendash@intuit.com

In this tutorial, you will learn how to implement cyclone effects. We will make a "working" tornado of sorts. It will spin you and lift you and throw you on your butt. By reversing direction, it would suck you down. In water, this would be a whirlpool.

Glossary:

Zone: In Unreal, a closed area defined by a Zone Info object.
Cyclone: also Tornado, Twister, Whirlpool, Vortex

There's a storm brewing...

Zones are amazing things. You can be in them and not even know it. In this case, you will. There are properties of zones, namely the direction and strength of gravity, and a "velocity" which can move you around. You can also play with the ground friction. No friction would have you sliding as on ice.
The main property we will play with is the zone velocity. In any zone, you can have it move you around, like a wind blowing or river sweeping you down. But a zone cannot spin you around (unless you know how to do this, please let me know). However, nobody said you can"t have more that one zone. In this example, I create 4 pillar-like zones, arranged in a 2 x 2 square, all side-by-side. Each zone has one direction, and that direction blows you into an adjacent zone. If we were to number the zones, looking down on them, like this:
1 2
3 4
then we will have zone 1 blow into zone 2, zone 2 blow into zone 4, zone 4 blow into zone 3, and zone 3 blow into zone 1.
So, you create your 4 zones, and in each one, you put a ZoneInfo class. On each one of those, you will set the ZoneVelocity X and Y parameters to point into an adjacent zone. In this example:
1 -> 2 is +X
2 -> 4 is -Y
4 -> 3 is -X
3 -> 1 is +Y
You choose the speeds, but they don"t have to be big. Anywhere from 1 to 10 produces a nice effect. You can go faster, but it might not play too well.
You may want to adjust the ground friction for all 4 zones as well. The default is 4, but if you want more of an effect, reduce it.

The Answer is Blowin" in the Wind

Now, to get a tornado to lift you up, you should also set a Z velocity for all 4 zones. Again, smaller numbers will do. For a whirlpool, use negative Z velocities.
One thing I haven"t done yet is actually lift you off the ground, so now it"s time for that. In the example map, if you walk into the twister, it will move you around, but it will not lift you up. You have to jump, then off you go. You could drop the ground around the twister, so the player will already have their feet off the ground entering the zones, but that"s not really cool. You could put a power-up on a pedastal in the middle of the storm to encourage a jump, kinda cheezy. Setting ground friction to zero will not lift you up, you are adhered to the surface until you jump or something else gets you off the ground. It does make it slipperier, like ice, so the wind blows you around faster. But there are two ways I know of to get you off the ground without jumping or blasting: set the gravity to point up, or make a kicker. In this case, the gravity is more elegant. Play with the gravity vectors in the zones. Normally, they point down (-Z). Set all to zero, or even set the Z value positive (1 will do). Up up and away!
Once you are off the ground, there is no ground friction, so two things happen: 1) you can now use any "air-control" (that magical flying ability), and 2) the twister will tend to toss you out one side. If you want the player in the twister longer, you can make it bigger in the XY plane. You could flare the top, so that the top is wider than the bottom. You can also point the velocity vectors more toward the middle, instead of just to the left, right, up, or down. This will tend to keep the player more toward the center of the twister.

Toto, we are not in Kansas anymore...

You may also want to see how it works with fewer or more zones. The fewest would be three. Six or eight would work, may be overkill
For added effect, you could stack one twister atop another. You can set the lower one to be stronger (as in nature) or weaker, depending on what you want it to play like.
You could also try nesting twister zones. Meaning, you can have a "core" set of, say, these 4, and then surround those with more zones. You could make those outer zones more or less "fast" and more or less "inward pointing". If you want to draw someone in and keep them in, make the outer zone point in more. It will toss them around more keeping them "in the zone" heh heh heh. You could also create an "eye of the storm" by having no zone in the middle. Say, 8 zones surrounding nothing, like a hurricane.

Texas City Twister

Zones are inherently invisible. So, as yet, you can"t see the thing, you just see what it does when you get into it. I will leave it to you to design a convincing atmospheric effect. I suggest using sheets with semi-transparent dirty textures. You can use U-pan texture properties to make it look like the stuff is moving. If you want to get fancy, you can make the sheets from mover brushes, set to rotating around the center of the twister. You can also try the Pillar of Fire from the Exodus story, a swirly cloud, sparks, use your imagination.
You should also pick a nice sound for your effect. Real tornados sound like jet engines or big freight trains roaring by real fast.
If the intent of your twister is to do damage, play with the zoneinfos" pain, destructive, and damage settings to suit your needs.

Tempest in a Teacup

These are screen shots from that map. Notice the top view shows the 4 zones. I placed cones in each zone, which point in the direction of the zone velocity vector (or "wind direction") for that zone. Notice in the side views the green rectangles are the twister zones, so this thing throws you almost to the ceiling. If you play this and walk in between the cones, you"ll start swirling around.
This shot"s 3d view is looking down into the "eye" of the storm. I like to use that texture on zone surfaces, as it shows their alignment. In this case the alignment is not critical, but it does show the "wind" direction in the twister.
This shot shows the actual settings for Zone 1.
This enlargement shows the settings in the Zone 1 properties.