# ENTITY:TestCollision

- **Ortam:** İstemci, Sunucu
- **İngilizce aslı:** https://wiki.facepunch.com/gmod/ENTITY:TestCollision
- **Çeviri tarihi:** 2025-09-08

```lua
table ENTITY:TestCollision( Vector startpos, Vector delta, boolean isbox, Vector extents, number mask )
```

## Açıklama

Bir izleme (trace) objeye çarptığında izleme sonucunu geçersiz kılmanıza olanak tanır.

Bu kancanın (hook) çalışması için objenizin [Entity:EnableCustomCollisions](https://gmod.tr/wiki/Entity:EnableCustomCollisions) özelliğinin etkinleştirilmiş olması **gerekir**.

Objenizin aynı zamanda bir izleme ile "vurulabilir" olması gerekir, bu nedenle (örneğin) [SOLID_OBB](https://gmod.tr/wiki/Enums/SOLID#SOLID_OBB) veya [SOLID_VPHYSICS](https://gmod.tr/wiki/Enums/SOLID#SOLID_VPHYSICS) olarak ayarlanmış olmalı ve [çarpışma sınırları](https://gmod.tr/wiki/Entity:SetCollisionBounds) buna göre ayarlanmalıdır.

> **NOT:** Bu kanca (hook) yalnızca `anim` türü için çağrılır.

## Argümanlar

1. [Vector](https://gmod.tr/wiki/Vector) **startpos**: İzlemenin başlangıç konumu.
2. [Vector](https://gmod.tr/wiki/Vector) **delta**: startpos'tan izlemenin bitiş konumuna olan uzaklık (offset).
3. [boolean](https://gmod.tr/wiki/boolean) **isbox**: İzleme bir hull izlemesi (hull trace) mi?
4. [Vector](https://gmod.tr/wiki/Vector) **extents**: Hull izlemesinin boyutu. Sınırlayıcı Kutunun (Bounding Box) merkezi `0, 0, 0` olup, minimumlar `-extents` ve maksimumlar `extents` olur.
5. [number](https://gmod.tr/wiki/number) **mask**: [CONTENTS enum](https://gmod.tr/wiki/Enums/CONTENTS) maskesi.

## Döndürülenler

1. [table](https://gmod.tr/wiki/table): Bir `table` döndürmek, izleme sonuçlarını geçersiz kılmanıza olanak tanır. Tablo aşağıdaki anahtarları içermelidir: (Tüm anahtarlar orijinal izleme değerine geri döner) - [Vector](https://gmod.tr/wiki/Vector) `HitPos` - İzlemenin yeni vuruş konumu. - [number](https://gmod.tr/wiki/number) `Fraction` - `0` ile `1` arasında, izlemenin başlangıç noktasından ne kadar ilerlediğini açıklayan bir sayı. `1` = vurmadı. - Şu şekilde hesaplanabilir: `Fraction = ( startpos + delta ):Length() / myCustomHitPos:Length()` - [Vector](https://gmod.tr/wiki/Vector) `Normal` - Vurulan yüzeye dik yönü tanımlayan bir birim vektör (uzunluk=1). `true` döndürmek, `SOLID_VPHYSICS` ve `SOLID_OBB` objeleri için "normal" çarpışmaların gerçekleşmesine izin verir. `nothing` (hiçbir şey) veya `false` döndürmek, izlemenin objeyi tamamen görmezden gelmesini sağlar.

### Örnek

`lua/entities/widget_base.lua` dosyasından alınmış örnek

```lua
function ENT:TestCollision( startpos, delta, isbox, extents )

	if ( isbox ) then return end
	if ( !widgets.Tracing ) then return end

	-- TODO. Küpümüze karşı gerçekten izleme yap!

	return
	{
		HitPos		= self:GetPos(),
		Fraction	= 0.5 * self:GetPriority()
	}

end
```

### Örnek

Oyuncuların objenin içinden ateş etmelerine izin verir, ancak yine de üzerinde durmalarına ve Fizik Silahı'nı (Physics Gun) üzerinde kullanmalarına vb. olanak tanır.

```lua
local sent_contents = CONTENTS_GRATE
function ENT:TestCollision( startpos, delta, isbox, extents, mask )
	if bit.band( mask, sent_contents ) ~= 0 then return true end
end
```

- [GMod Wiki ana sayfası](https://gmod.tr/wiki)

---

[Tüm sunucular](https://gmod.tr/) · [GmodTR Launcher](https://gmod.tr/launcher) · [Rehber](https://gmod.tr/rehber) · [GMod Wiki](https://gmod.tr/wiki) · [GmodTR nedir?](https://gmod.tr/hakkinda) · [Sunucu ekle](https://gmod.tr/sunucu-ekle) · [Discord](https://discord.gg/gmodtr)

Kaynak: https://gmod.tr/wiki/ENTITY:TestCollision
