Revision Difference
PhysObj:ApplyForceCenter#510916
<function name="ApplyForceCenter" parent="PhysObj" type="classfunc">⤶
<description>⤶
Applies the specified force to the physics object. (in Newtons)⤶
⤶
<note>This will not work on players, use <page>Entity:SetVelocity</page> instead.</note>⤶
</description>⤶
<realm>Shared</realm>⤶
<args>⤶
<arg name="force" type="Vector">The force to be applied.</arg>⤶
</args>⤶
</function>⤶
⤶
<example>⤶
<description>⤶
An entity that Simulates it's own gravity by applying a force downward on the entity based on the force equation.⤶
⤶
(Force = mass * acceleration)⤶
⤶
Since, by default, entities already have gravity. The default gravity must be turned off by adding "phys:EnableGravity(false)" in the entities Initialize function so that the default gravity doesn't interfere with our custom gravity.⤶
⤶
NOTE: We can get the mass of the entity by using the GetMass() function.⤶
⤶
⤶
⤶
<note>-9.80665 (meters / second^2) Is the approximate acceleration of objects on Earth due to gravity. (It is negative because gravity pushes things downwards.)</note>⤶
</description>⤶
<code>⤶
function ENT:Initialize()⤶
self:SetModel("models/hunter/blocks/cube1x1x1.mdl")⤶
self:PhysicsInit(SOLID_VPHYSICS)⤶
self:SetSolid(SOLID_VPHYSICS)⤶
self:SetMoveType(MOVETYPE_VPHYSICS)⤶
⤶
if phys:IsValid() then⤶
phys:EnableGravity(false) -- This is required. Since we are creating our own gravity.⤶
phys:Wake()⤶
end⤶
end⤶
⤶
function ENT:PhysicsUpdate(phys)⤶
local phys = self:GetPhysicsObject()⤶
phys:ApplyForceCenter(Vector(0,0,phys:GetMass()*-9.80665))⤶
end⤶
</code>⤶
⤶
</example>