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
Ö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