ApplyHavokImpulse - ObjectReference
Revision as of 07: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.