PhysObj:ApplyForceCenter

  PhysObj:ApplyForceCenter( Vector impulse )

Açıklama

Belirtilen itkiyi (impulse) fizik nesnesinin kütle merkezine uygular.

Bu, oyuncular üzerinde çalışmaz; onun yerine Entity:SetVelocity kullanın.

Argümanlar

1 Vector impulse
Uygulanacak itki (impulse), birimi kg*source_unit/s'dir. (Vektör, dünya koordinat sistemindedir)

Örnek

Kuvvet denklemine dayanarak objeye aşağı doğru bir kuvvet uygulayarak kendi yer çekimini simüle eden bir obje:

(Kuvvet = kütle * ivme)

Varsayılan olarak objelerin zaten yer çekimi olduğundan, varsayılan yer çekiminin özel yer çekimimizle çakışmaması için objenin Initialize fonksiyonuna phys:EnableGravity(false) eklenerek kapatılması gerekir.

NOT: Objenin kütlesini PhysObj:GetMass fonksiyonunu kullanarak alabiliriz.

-9.80665 (metre / saniye ^ 2), Dünya'daki nesnelerin yer çekimi nedeniyle yaklaşık ivmesidir. (Yer çekimi nesneleri aşağı doğru ittiği için negatiftir.)
ApplyForceCenter'ın kabul ettiği itki biriminin kg*source_unit / s olduğu göz önüne alındığında, birim dönüşümü yapmamız gerekir: 1 metre ≈ 39.37 source birimi (obje ölçeğinde)
function ENT:Initialize() self:SetModel( "models/hunter/blocks/cube1x1x1.mdl" ) self:PhysicsInit( SOLID_VPHYSICS ) self:SetSolid( SOLID_VPHYSICS ) self:SetMoveType( MOVETYPE_VPHYSICS ) local phys = self:GetPhysicsObject() if phys:IsValid() then phys:EnableGravity( false ) -- Bu gereklidir, çünkü kendi yer çekimimizi oluşturuyoruz. phys:Wake() end end function ENT:PhysicsUpdate( phys ) local force = phys:GetMass() * Vector( 0, 0, -9.80665 ) * 39.37 -- Bu bize kuvveti kg*source_unit/s^2 cinsinden verir local dt = engine.TickInterval() -- Kuvvetin nesne üzerinde etki ettiği zaman aralığı (saniye cinsinden) phys:ApplyForceCenter( force * dt ) -- İkisini çarpmak bize itkiyi kg*source_unit/s cinsinden verir end

Tüm sunucular · GmodTR Launcher · Rehber · GMod Wiki · GmodTR nedir? · Sunucu ekle · Discord