util.TraceHull

  table util.TraceHull( table TraceData )

Açıklama

Verilen izleme verileriyle bir AABB (eksen hizalı sınırlayıcı kutu, yani döndürülmemiş) kabuk izlemesi gerçekleştirir.

Bu izleme türü hitbox'lara isabet edemez.

Basit bir çizgi ("ışın") izlemesi için util.TraceLine sayfasına bakın.

Bu fonksiyon, istemcide belirli fizik mekanizmalarının bulunmaması nedeniyle istemci tarafında her zaman istenen sonuçları vermeyebilir. Doğru sonuçlar için sunucu tarafında kullanın.

Argümanlar

1 table ile HullTrace yapısı TraceData
Kullanılacak izleme verisi. HullTrace yapısı sayfasına bakın

Dönen Değerler

1 table ile TraceResult yapısı
İzleme sonucu. TraceResult yapısı sayfasına bakın

Örnek

Bir Kabuk İzlemesinin (Hull Trace) görsel temsili.

function ENT:Draw() self:DrawModel() -- Varlık modelinin sınırlayıcı kutusu local mins = self:OBBMins() local maxs = self:OBBMaxs() local startpos = self:GetPos() -- İzleme için başlangıç noktası local dir = self:GetUp() -- İzleme yönü, birim vektör olarak local len = 128 -- İzlemenin maksimum uzunluğu -- İzlemeyi gerçekleştir local tr = util.TraceHull( { start = startpos, endpos = startpos + dir * len, maxs = maxs, mins = mins, filter = self } ) -- Gerçekleştirilen izlemenin başlangıcı ve sonu arasında bir çizgi çiz render.DrawLine( tr.HitPos, startpos + dir * len, color_white, true ) render.DrawLine( startpos, tr.HitPos, Color( 0, 0, 255 ), true ) -- Bir renk seç, eğer izleme isabet ettiyse - rengi kırmızı yap local clr = color_white if ( tr.Hit ) then clr = Color( 255, 0, 0 ) end -- İzleme sınırlarını başlangıç ve bitiş pozisyonlarında çiz render.DrawWireframeBox( startpos, Angle( 0, 0, 0 ), mins, maxs, Color( 255, 255, 255 ), true ) render.DrawWireframeBox( tr.HitPos, Angle( 0, 0, 0 ), mins, maxs, clr, true ) end
Çıktı:

Örnek

Bir oyuncunun herhangi bir şeyin içinde sıkışmadan burada doğup doğamayacağını tespit etmek için oyuncu boyutunda bir kabuk izlemesi yapın.

local pos = Entity(1):GetPos() -- Pozisyonunuzu seçin. local tr = { start = pos, endpos = pos, mins = Vector( -16, -16, 0 ), maxs = Vector( 16, 16, 71 ) } local hullTrace = util.TraceHull( tr ) if ( hullTrace.Hit ) then -- Yeni bir doğma noktası bul end

Örnek

Bir SWEP:PrimaryAttack() fonksiyonundan

local tr = util.TraceHull( { start = self:GetOwner():GetShootPos(), endpos = self:GetOwner():GetShootPos() + ( self:GetOwner():GetAimVector() * 100 ), filter = self:GetOwner(), mins = Vector( -10, -10, -10 ), maxs = Vector( 10, 10, 10 ), mask = MASK_SHOT_HULL } )

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