There is no spoon

Legacy:ViewShaker

From Unreal Wiki, The Unreal Engine Documentation Site
Jump to: navigation, search
UT2003 :: Actor >> Triggers (UT2003) >> ViewShaker (Package: Engine)

This is a triggerable actor. The actor will affect player's views within the specified ShakeRadius.

Properties[edit]

vector OffsetMag 
The Magnitude and direction of the positional offset for the player's view camera, expressed as a vector.
vector OffsetRate 
The Rate at which the positional offset will oscillate from one extreme to the other.
float OffsetTime 
The length of Time after the ViewShaker is triggered the player's view will shake positionally.
vector RotMag 
The Magnitude and direction of the rotational offset for the player's view camera, expressed as a rotational vector.
vector RotRate 
The Rate at which the rotational offset will oscillate from one extreme to the other.
float RotTime 
The length of Time after ViewShaker is triggered the player's view will shake rotationally.
float ShakeRadius 
The distance a player must be within to the ViewShaker actor for the effect to happen.

Notes[edit]

  • Funny "drunk" effects can be achieved with a slower RotRate, longer RotTime.
  • The interpolation, or dynamic change, from the most extreme positions or rotations to the resting, unshaking camera is linear. That is to say, regular, and not smooth or organic.
  • The ViewShaker's effectiveness within its radius is constant. The amount of shake does not attenuate or "drop-off" the farther the player is from the ViewShaker actor. Even a player just within the ShakeRadius will see the full shaking effect.
  • The Mag values are vectors in WorldSpace. Meaning, the direction the shake will happen is constant and not at all dependent on the positions of the player relative to the ViewShaker actor. (SuperApe: although, I wish there were a RadialViewShaker.) The Redeemer's shake simply goes up and down; which is pretty effective in most cases.

Discussion[edit]

Dr.AwkwArD: My impression is that OffsetMag relates to "panning" the screen in both verticle and horizontal directions (and maybe even indepth–so more like a dolly-in or dolly-out, so to speak); and that RotMag relates to the "pitch" of the screen in both Clockwise and Counter-Clockwise directions (was well as in depth...?). I'm also not convinced that OffsetTime or RotTime actually represent the length of time that those actions are to happen. Instead, it seems that the durration of the effect is based on a combination of the Rate and the Time vars. I just haven't figured out what the relationship is... BTW, I've looked in Object, Actor, and Triggers and cannot find the "original definition" of the ShakeView function. I suppose it's another nasty bit o' native code. It sure would be nice to see it so that we could quickly devine what these vars *really* mean...

SuperApe: My bad. I just copied the cryptic comments from the code. That's lazy of me. Edit. :D

Foxpaw: The relevant function definitions look like this:

function DamageShake(int damage);
function ShakeView(vector shRotMag,    vector shRotRate,    float shRotTime, 
                   vector shOffsetMag, vector shOffsetRate, float shOffsetTime);

It is in the controller class. If you look at the code for viewshaker you can see that it walks the controller list and calls the function on the controller. Hence why you wouldn't find it in Object, Actor, or Triggers.

Unfortunately, the parameters don't seem any more descriptive than the variables in ViewShaker.

Damageshake I included because it's declared right above Shakeview and is likely related in some way - maybe just a "shortcut" method of shaking the screen when damage is taken.

SuperApe: Has anyone seen a place where DamageShake is used? It isn't used by default is it?