Entity:PhysicsInitMultiConvex

  boolean Entity:PhysicsInitMultiConvex( table vertices, string surfaceprop = "default", Vector massCenterOverride = nil )

Açıklama

Entity:PhysicsInitConvex fonksiyonunun, bir fizik nesnesini birden çok dışbükey (convex) ağdan başlatan gelişmiş bir versiyonudur. Bu, tek bir dışbükey ağ ile temsil edilemeyen özel bir şekle sahip fizik nesneleri için kullanılmalıdır.

Başarılı olursa, önceki fizik nesnesi kaldırılacaktır.

Bu fonksiyonu çağırmadan önce istenen katılık türü ile Entity:SetSolid fonksiyonunu çağırmanız beklenebilir.

Sunucu taraflı varlıklardaki istemci taraflı fizik nesneleri bazı durumlarda düzgün hareket etmez. Fizik nesneleri yalnızca sunucuda oluşturulmalıdır, aksi takdirde yanlış fizik silahı (physgun) ışın konumu, tahmin (prediction) sorunları ve diğer beklenmedik davranışlarla karşılaşırsınız.

Entity:PhysicsInitConvex sayfasında bir geçici çözüm mevcuttur.

Sorun Takipçisi: 5060

Argümanlar

1 table vertices
Vector tablolarından oluşan bir tablodur. Her bir alt tablo, bir dışbükey ağın hesaplanmasında kullanılacak bir dizi noktayı tanımlar.
2 string surfaceprop = "default"
surfaceproperties.txt dosyasından veya physenv.AddSurfaceData ile eklenmiş fiziksel materyal.
3 Vector massCenterOverride = nil
Eğer ayarlanırsa, oluşturulan fizik nesnesinin kütle merkezinin üzerine yazar.

Döndürülen Değerler

1 boolean
Başarılı olursa true, aksi takdirde nil döndürür.

Örnek

Varlık için iki kutudan oluşan bir fizik ağı oluşturur.

local min1 = Vector( -30, -10, 0 ) -- Kutu1 minimum köşe local max1 = Vector( -10, 10, 20 ) -- Kutu1 maksimum köşe local min2 = Vector( 10, -5, 10 ) -- Kutu2 minimum köşe local max2 = Vector( 30, 5, 40 ) -- Kutu2 maksimum köşe if SERVER then local convex = { { -- Her bir alt tablo, bir dışbükey parçanın köşe noktaları kümesidir, sıra önemli değildir Vector( min1.x, min1.y, min1.z ), -- Birinci kutunun köşe noktaları Vector( min1.x, min1.y, max1.z ), Vector( min1.x, max1.y, min1.z ), Vector( min1.x, max1.y, max1.z ), Vector( max1.x, min1.y, min1.z ), Vector( max1.x, min1.y, max1.z ), Vector( max1.x, max1.y, min1.z ), Vector( max1.x, max1.y, max1.z ), }, { -- Tüm bu tablolar birlikte içbükey (concave) bir çarpışma ağı oluşturur Vector( min2.x, min2.y, min2.z ), -- İkinci kutunun köşe noktaları Vector( min2.x, min2.y, max2.z ), Vector( min2.x, max2.y, min2.z ), Vector( min2.x, max2.y, max2.z ), Vector( max2.x, min2.y, min2.z ), Vector( max2.x, min2.y, max2.z ), Vector( max2.x, max2.y, min2.z ), Vector( max2.x, max2.y, max2.z ), }, } function ENT:Initialize() self:SetModel( "models/props_c17/oildrum001.mdl" ) -- Çoklu dışbükey fizik ağını başlatma self:PhysicsInitMultiConvex( convex ) self:SetSolid( SOLID_VPHYSICS ) -- Katılığı ayarlama self:SetMoveType( MOVETYPE_VPHYSICS ) -- Hareket türünü ayarlama self:EnableCustomCollisions( true ) -- Özel çarpışma ağını etkinleştirme self:PhysWake() -- Fizik hareketini etkinleştirme end else local col = Color( 0, 0, 255, 255 ) -- Çarpışma kutularını istemcide çizme function ENT:Draw() self:DrawModel() local pos, ang = self:GetPos(), self:GetAngles() render.DrawWireframeBox( pos, ang, min1, max1, col ) -- Birinci çarpışma kutusunu çizme render.DrawWireframeBox( pos, ang, min2, max2, col ) -- İkinci çarpışma kutusunu çizme end end
Çıktı:

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