Garry's Mod Wiki

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>