Difference between revisions of "ApplyHavokImpulse - ObjectReference"
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.