Gah - a solution with more questions. – EntropicLqd

Legacy:Kicker

From Unreal Wiki, The Unreal Engine Documentation Site
Jump to: navigation, search
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[edit]

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.

Please note that, for bots to use it in the pathing, you must set a LiftCenter in (or slightly above) the jump pad and a LiftExit in the kicker's destination, providing the same LiftTag of course.

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[edit]

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.

Alternatives[edit]

Even though setting KickVelocity manually and testing it and retrying that a lot can be a pain in the a$$, there is a cool alternative that is similiar to UT2k's Jump pad method: the Easy Kicker Mod. More instructions in the link.

Extending[edit]

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[edit]

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 :)