# util.IntersectRayWithOBB

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

```lua
Vector, Vector, number util.IntersectRayWithOBB( Vector rayStart, Vector rayDelta, Vector boxOrigin, Angle boxAngles, Vector boxMins, Vector boxMaxs )
```

## Açıklama

Bir Işın-OBB (Yönlendirilmiş Sınırlayıcı Kutu) kesişimi gerçekleştirir ve bir kesişim varsa pozisyonu, normali ve kesir değerini döndürür.

## Argümanlar

1. [Vector](https://gmod.tr/wiki/Vector) **rayStart**: Işının başlangıç noktası veya pozisyonu.
2. [Vector](https://gmod.tr/wiki/Vector) **rayDelta**: Işın vektörünün kendisi, başlangıç noktasına göre ışın bitiş noktası. `yön * mesafe` olarak uygulanabilir. Bu uygulamada ışının sonsuz olmadığını - yalnızca bir segment olduğunu unutmayın.
3. [Vector](https://gmod.tr/wiki/Vector) **boxOrigin**: Kutunun merkezi.
4. [Angle](https://gmod.tr/wiki/Angle) **boxAngles**: Kutunun açısı.
5. [Vector](https://gmod.tr/wiki/Vector) **boxMins**: Kutunun minimum pozisyonu.
6. [Vector](https://gmod.tr/wiki/Vector) **boxMaxs**: Kutunun maksimum pozisyonu.

## Dönen Değerler

1. [Vector](https://gmod.tr/wiki/Vector): Vuruş pozisyonu, vurmadıysa nil.
2. [Vector](https://gmod.tr/wiki/Vector): Normal/yön vektörü, vurmadıysa nil.
3. [number](https://gmod.tr/wiki/number): Kullanılan izleme kesri, vurmadıysa nil.

### Örnek

Fonksiyonun görselleştirme ile örnek kullanımını gösteren basit bir örnek. Oyun içi konsola `developer 1` yazın ve herhangi bir entity'e bakın. Kesişim yoksa kırmızı bir kutu, kesişim varsa yeşil bir kutu gösterecektir.

Lütfen örneğin bir kutu oluşturmak için bir entity kullandığını, ancak bunun zorunlu olmadığını unutmayın. Buradaki asıl amaç, fiziksel olmayan nesnelere karşı kesişim kontrolleri yapmaktır, örneğin oyun dünyasındaki bir kullanıcı arayüzü ekranı veya bir oyuncunun (ya da bir NPC'nin) haritanın belirli bir bölümüne bakıp bakmadığını test etmek gibi.

```lua
-- Baktığımız entity'i sakla
local ent = NULL

-- Bunu her karede yap
hook.Add( "Think", "Think_IntersectRayWithOBBExample", function()

	-- Oyuncu nesnesini sakla
	local ply = Entity( 1 )

	-- Eğer oyuncu geçerli bir entity'e baktıysa, bizim entity'mizi ona değiştir
	local trEnt = ply:GetEyeTrace().Entity
	if ( IsValid( trEnt ) ) then ent = trEnt end

	-- Entity yok mu? hiçbir şey yapma
	if ( !IsValid( ent ) ) then return end

	-- Oyuncunun gözlerinden entity'nin OBB'sine karşı bir ışın kesişimi gerçekleştir
	local hitPos, hitNormal, frac = util.IntersectRayWithOBB( ply:GetShootPos(), ply:GetAimVector() * 500, ent:GetPos() + ent:OBBCenter(), ent:GetAngles(), ent:OBBMins(), ent:OBBMaxs() )
	-- print( "sonuç: ", hitPos, hitNormal, frac ) -- Hata ayıklama için

	-- OBB görselleştirmesini çiz, konsolda developer 1 gerektirir.
	debugoverlay.BoxAngles( ent:OBBCenter() + ent:GetPos(), ent:OBBMins(), ent:OBBMaxs(), ent:GetAngles(), 0.01, hitPos != nil and Color(0,255,0) or Color( 255,0, 0) )

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/util.IntersectRayWithOBB
