m |
|||
Line 74: | Line 74: | ||
Space.Log(obj.Rigidbody.Sleeping);<br> | Space.Log(obj.Rigidbody.Sleeping);<br> | ||
''-- prints "False" to the console''}} | ''-- prints "False" to the console''}} | ||
+ | |||
+ | {{ScriptFunction|SVector|GetPointVelocity| (SVector worldPoint)|The velocity of the rigidbody at the point worldPoint in global space. |5= | ||
+ | solid = Space.Scene.Find("Solid")<br> | ||
+ | ''--get rigidbody of inertia frame.''<br> | ||
+ | rigid = solid.Rigidbody<br> | ||
+ | if rigid == nil then<br> | ||
+ | rigid = solid.AddRigidbody()<br> | ||
+ | end<br> | ||
+ | rigid.AddTorque(Vector.New(100,0,0))<br> | ||
+ | ''--add torque to rigidbody and output point velocity''<br> | ||
+ | Space.Log(rigid.GetPointVelocity(Vector.New(0.5,0.5,0.5)).ToString()) | ||
+ | }} | ||
+ | |||
+ | {{ScriptFunction|SVector|GetRelativePointVelocity| (SVector point)|The velocity relative to the rigidbody at the point relativePoint. |5= | ||
+ | solid = Space.Scene.Find("Solid")<br> | ||
+ | ''--get rigidbody of inertia frame.''<br> | ||
+ | rigid = solid.Rigidbody<br> | ||
+ | if rigid == nil then<br> | ||
+ | rigid = solid.AddRigidbody()<br> | ||
+ | end<br> | ||
+ | rigid.AddTorque(Vector.New(100,0,0))<br> | ||
+ | ''--Add torque to rigidbody and output relative point velocity''<br> | ||
+ | Space.Log(rigid.GetRelativePointVelocity(Vector.New(1,1,1)).ToString()) | ||
+ | }} | ||
+ | |||
+ | {{ScriptFunction|SVector|GetRelativePointVelocity| (SVector point)|The velocity relative to the rigidbody at the point relativePoint. |5= | ||
+ | solid = Space.Scene.Find("Solid")<br> | ||
+ | ''--get rigidbody of inertia frame.''<br> | ||
+ | rigid = solid.Rigidbody<br> | ||
+ | if rigid == nil then<br> | ||
+ | rigid = solid.AddRigidbody()<br> | ||
+ | end<br> | ||
+ | rigid.AddTorque(Vector.New(100,0,0))<br> | ||
+ | ''--Add torque to rigidbody and output relative point velocity''<br> | ||
+ | Space.Log(rigid.GetRelativePointVelocity(Vector.New(1,1,1)).ToString()) | ||
+ | }} | ||
The Rigidbody class works with the physics of the object. Requires the Rigidbody component to function.
Applies a force to a rigidbody that simulates explosion effects. Other rigidbodies will be affected by the explosion within its radius - the closer they are to the explosionPosition, the stronger the force will be exerted on them.
obj.Rigidbody.AddExplosionForce (300, obj.WorldPosition, 10, 20)
-- The explosion will occur at the location of the ExecutingObject.
Adds a force to the Rigidbody that is continuously exerted on it in the given direction.
obj.Rigidbody.AddForce (Vector.New(0,100,0));
Adds a force to the Rigidbody at a given position (should be within the range of the rigidbody for a realistic result). Thus, both a torque and force are applied to the object.
local applyForceHere = Vector.New(obj.WorldPosition.x-0.5,obj.WorldPosition.y-0.5,obj.WorldPosition.z-0.5)
-- This vector is equivalent to one of the lower corners of a 1x1x1 cube.
obj.Rigidbody.AddForceAtPosition (Vector.New(0,40,0), applyForceHere);
Adds a torque to the rigidbody relative to the local coordinate system.
obj.Rigidbody.AddRelativeTorque (Vector.New(0,100,0));
Adds a torque to the rigidbody relative to the global coordinate system.
obj.Rigidbody.AddTorque (Vector.New(0,100,0));
Returns the closest point on the bounding box of the attached colliders.
Space.Log(obj.Rigidbody.ClosestPointOnBounds (Vector.Zero));
Moves the rigidbody to position.
local moveHere = Vector.New(obj.WorldPosition.x+10,obj.WorldPosition.y,obj.WorldPosition.z);
obj.Rigidbody.MovePosition (moveHere);
Rotates the rigidbody to rotation.
local setRotationTo = Quaternion.Euler(60,0,0)
obj.Rigidbody.MoveRotation (setRotationTo);
Reset the center of mass of the rigidbody.
obj.Rigidbody.CenterOfMass = Vector.New(1,1,1);
Space.Log(obj.Rigidbody.CenterOfMass);
-- prints "[1,1,1]" to the console
obj.Rigidbody.ResetCenterOfMass();
Space.Log(obj.Rigidbody.CenterOfMass);
Forces a rigidbody to sleep.
obj.Rigidbody.Sleep();
Space.Log(obj.Rigidbody.Sleeping);
-- prints "True" to the console
obj.Rigidbody.WakeUp();
Space.Log(obj.Rigidbody.Sleeping);
Forces a rigidbody to wake up.
obj.Rigidbody.Sleep();
Space.Log(obj.Rigidbody.Sleeping);
-- prints "True" to the console
obj.Rigidbody.WakeUp();
Space.Log(obj.Rigidbody.Sleeping);
The velocity of the rigidbody at the point worldPoint in global space.
--get rigidbody of inertia frame.
rigid = solid.Rigidbody
if rigid == nil then
rigid = solid.AddRigidbody()
end
rigid.AddTorque(Vector.New(100,0,0))
--add torque to rigidbody and output point velocity
The velocity relative to the rigidbody at the point relativePoint.
--get rigidbody of inertia frame.
rigid = solid.Rigidbody
if rigid == nil then
rigid = solid.AddRigidbody()
end
rigid.AddTorque(Vector.New(100,0,0))
--Add torque to rigidbody and output relative point velocity
The velocity relative to the rigidbody at the point relativePoint.
--get rigidbody of inertia frame.
rigid = solid.Rigidbody
if rigid == nil then
rigid = solid.AddRigidbody()
end
rigid.AddTorque(Vector.New(100,0,0))
--Add torque to rigidbody and output relative point velocity
The angular drag of the object.
-- Set a new angular drag value
obj.Rigidbody.AngularDrag = 0.20;
-- Get the current angular drag value
Space.Log(obj.Rigidbody.AngularDrag);
The angular velocity vector of the rigidbody (in radians per second).
-- Set a new angular velocity vector
obj.Rigidbody.AngularVelocity = Vector.New(0,Space.Math.Pi,0);
-- Now the object is rotating about the Y axis at a speed of 180 degrees per second
-- (or 30 revolutions per minute)
-- Get the current angular velocity vector
Space.Log(obj.Rigidbody.AngularVelocity);
The center of mass relative to the local origin.
-- Set a new center of mass
obj.Rigidbody.CenterOfMass = Vector.New(1,0,0);
-- Now the object's center of mass has been moved by 1 at the X axis
-- Get the current center of mass
Space.Log(obj.Rigidbody.CenterOfMass);
The drag of the object.
-- Set a new drag value
obj.Rigidbody.Drag = 20;
-- Now the object's drag is set to 20 - the higher the number, the more it is resistant to gravity
-- Get the current drag value
Space.Log(obj.Rigidbody.Drag);
Controls whether physics will have any impact on the rotation of the object.
-- Set FreezeRotation to True
obj.Rigidbody.FreezeRotation = true;
-- Now under no circumstances the object's rotation coordinates will change.
-- Get the FreezeRotation value (find out if Freeze Rotation is in action)
Space.Log(obj.Rigidbody.FreezeRotation);
Controls whether physics will have any impact on the object.
-- Set Kinematic to True
obj.Rigidbody.Kinematic = true;
-- Now the object will not be affected by gravity, collisions, or other forces.
-- Get the Kinematic value (find out if Kinematic is in action)
Space.Log(obj.Rigidbody.Kinematic);
The mass of the rigidbody.
-- Set a new mass of the rigidbody
obj.Rigidbody.Mass = 0.1;
-- Get the current value of the rigidbody's mass
Space.Log(obj.Rigidbody.Mass);
The maximum angular velocity of the rigidbody (7 by default). Can be useful to prevent an object from spinning uncontrollably fast.
-- Set a new value for the maximum angular velocity
obj.Rigidbody.MaxAngularVelocity = 1;
-- Now the object, for example, is more resistant to rolling over upon collision with another object.
-- Get the current value of the rigidbody's maximum angular velocity
Space.Log(obj.Rigidbody.MaxAngularVelocity);
The maximum depenetration velocity of the rigidbody (1.00000003318135E+32 by default). Can be useful to make colliding objects bounce away in a smoother fashion.
-- Set a new value for the maximum depenetration velocity
obj.Rigidbody.MaxDepenetrationVelocity = 1;
-- Get the current value of the rigidbody's maximum depenetration velocity
Space.Log(obj.Rigidbody.MaxDepenetrationVelocity);
Controls whether gravity affects the rigidbody.
-- Set UseGravity to False (it is set to True by default)
obj.Rigidbody.UseGravity = false;
-- Now gravity does not affect the rigidbody.
-- Get the UseGravity value (find out if UseGravity is in action)
Space.Log(obj.Rigidbody.UseGravity);
The velocity vector of the rigidbody. (in units per second).
-- Set a new velocity vector
obj.Rigidbody.Velocity = Vector.New(0, 0, 1);
-- Now the object is moving in the positive Z direction at a speed of 1 unit per second
-- Get the current velocity vector
Space.Log(obj.Rigidbody.Velocity);
The center of mass of the rigidbody relative to the global origin (Read Only).
-- Get the current center of mass
Space.Log(obj.Rigidbody.WorldCenterOfMass);
Is the rigidbody sleeping?
obj.Rigidbody.Sleep();
Space.Log(obj.Rigidbody.Sleeping);
-- prints "True" to the console
obj.Rigidbody.WakeUp();
Space.Log(obj.Rigidbody.Sleeping);
The density of the object (1 by default). Changing this value will affect the mass of the object (the volume will remain unchanged).
Space.Log(obj.Rigidbody.Mass);
-- prints "1" to the console
obj.LocalScale = Vector.New(2,2,2);
obj.Rigidbody.Density = 0.5;
Space.Log(obj.Rigidbody.Mass);
|