ApplyHavokImpulse - ObjectReference

Revision as of 08:55, 22 October 2012 by imported>Perdev (Adding a note for bugs.)

Member of: ObjectReference Script

Applies a Havok impulse force to this object of the specified direction and magnitude.

Syntax

Function ApplyHavokImpulse(float afX, float afY, float afZ, float afMagnitude) native

Parameters

  • afX: X component of the force vector.
  • afY: Y component of the force vector.
  • afZ: Z component of the force vector.
  • afMagnitude: The magnitude of the force vector - how hard to hit this object.

Return Value

None.

Examples

; Apply a physical force along the x axis with a magnitude of 5 to a cheese wheel
CheeseWheel.ApplyHavokImpulse(1.0, 0.0, 0.0, 5.0)


To get a heavy object like a weapon to go flying as if hit with a very large force you must use a magnitude such as 10,000:

;sends testaxe, a heavy object, flying across room
;along the positive y-axis
testAxe.ApplyHavokImpulse(0.0, 1.0, 0.0, 10000.0)


To get an Actor to react to a havok impulse, you may need to apply a "push" first.

; launch the skeever up into the air
Game.GetPlayer().PushActorAway(Skeever, 0.0)
Skeever.ApplyHavokImpulse(0.0, 0.0, 1.0, 1000.0)

Notes

  • While the graphics and collision boxes are correctly moved by this function, GetPosition and GetAngle will return the old position. A workaround is to have a dummy, invisible, object and use MoveToNode to move it to one of your real object's nodes, then get the position of your dummy object. (source)
  • A side-effect of the previous bug is that if your object's original position is now a few cells away from the player, it will be unloaded by the game even if its graphics and collision box are close to the player. A workaround is to periodically update the position of your ship through SetPosition.

See Also