| Home Page | Recent Changes

Kicker

UT :: Actor (UT) >> Triggers (UT) >> Kicker (Package: Botpack)

Kickers are used to construct map elements like jump pads. It basically adds a certain amount of velocity to the kicked actor. Which actors are kicked can be defined in the properties. A Kicker sends out its Event when its touched, too.

See xKicker for the UT2003 version of this class or UTJumpPad for another UT2003 actor that kicks up players.

Using Kickers

The maximum velocity a player usually has while running is 300 (I think it was... <- please verify). Use this for orientation when setting up the kicker.

Besides slingshotting players to different locations, there is another unique thing that Kickers can be set up to do. If a mapper sets up a Kicker so that it has a null KickVelocity, and then he sets bKillVelocity to true, he will create a Kicker that will halt the motion of a flying or falling player. This can be used for such things as allowing players to fall great distances without dying when they land, or to catch a player as he flies or falls so that his motion can be controlled with more precision.

Add other Tips & Tricks here!

Recommended sound: UnrealI.Pickups.BootJmp. To obtain a sound with a normal kickers, set it to trigger a SpecialEvent actor. See the Extending below for a fix.

Properties

These are the properties and their default values:

KickVelocity = (X=0; Y=0; Z=0)
The additional amount of velocity the pawn will get. If you find that you can't get a player kicked to the location you want then you are probably hitting the terminal velocity of the zone. You can get around this by either increasing the zone's terminal velocity or adding another kicker with a large collision radius to give players the extra boost they need.
KickedClasses = Pawn
Defines the actor classes which are kicked (including their subclasses). In most cases, this will be "Pawn (UT)", "PlayerPawn" or "Bot (UT)".
bKillVelocity = False
If set to true, the initial velocity of the pawn when the kicker is touched will be eliminated. This means the kicker will not add to the players velocity but set it to the KickVelocity. This must be set to true for completely consistent results from a kicker.
bRandomize = False
If set to true, the kicker will not add the exact KickVelocity to the pawns velocity. The KickVelocity will be modified by the formula:
NewKickVelocity = VSize(KickVelocity) * Normal(KickVelocity + 0.5 * VSize(KickVelocity) * VRand())
This is a vector of the same length of the original KickVelocity but pointing in a direction which may differ up to 30 degree from the original direction.

Extending

TriggeredKicker toggles when triggered between normal and dormant states. When touched it plays a sound as well as kicking actors. No more mucking around with a SpecialEvent. —Tarquin

Notes:

  • bInitiallyActive seems to have no effect :(
  • I have no idea if this works in network games
//=============================================================================
// TriggeredKicker.
//=============================================================================
class TriggeredKicker extends Kicker;

var() bool bInitiallyActive ;
var() sound Sound ;

function PostBeginPlay() {
    if( !bInitiallyActive )
        gotostate('Dormant');
}

function Trigger( Actor Other, Pawn EventInstigator ) {
    gotostate('Dormant');
}

function Touch(  actor Other ) { 
    Super.Touch( Other );
    PlaySound( Sound );
}

state Dormant {
    ignores Touch, PostTouch;

    function Trigger( Actor Other, Pawn EventInstigator ) {
        gotostate('');
    }
}

Discussion

SabbathCat: The Triggered kicker can be triggered off, and it does seem to go to the dormant state when logged, but maybe something higher up the class tree isn't letting it become untouchable. It can definitely be triggered off though, so if someone wanted a quick fix, they could set up another normal trigger with bOnceOnly to true and have it's radius covering the entire map, to trigger all the kickers off initially. :)

Someone who knows more needs to take a look at it.

Tarquin: It's because I used "ignores" instead of an empty function, I suspect. Try changing it :)


Category Class (UT)

Category Custom Class

The Unreal Engine Documentation Site

Wiki Community

Topic Categories

Recent Changes

Offline Wiki

Unreal Engine

Console Commands

Terminology

FAQs

Help Desk

Mapping Topics

Mapping Lessons

UnrealEd Interface

UnrealScript Topics

UnrealScript Lessons

Making Mods

Class Tree

Modeling Topics

Chongqing Page

Log In