Difference between revisions of "ApplyHavokImpulse - ObjectReference"

From the CreationKit Wiki
Jump to navigation Jump to search
imported>JustinOther
m (→‎Examples: Floatified)
imported>Perdev
(Adding a note for bugs.)
Line 44: Line 44:
Skeever.ApplyHavokImpulse(0.0, 0.0, 1.0, 1000.0)
Skeever.ApplyHavokImpulse(0.0, 0.0, 1.0, 1000.0)
</source>
</source>
== Notes ==
* While the graphics and collision boxes are correctly moved by this function, [[GetPositionX - ObjectReference|GetPosition]] and [[GetAngleX - ObjectReference|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. [http://forums.bethsoft.com/topic/1416758-addhavokballandsocketconstraint-questions/page__view__findpost__p__21667888 (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 - ObjectReference|SetPosition]].


== See Also ==
== See Also ==
*[[ObjectReference Script]]
*[[ObjectReference Script]]

Revision as of 07:55, 22 October 2012

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