Işınlanma

*Bu içerik, yapay zekâ (beta) kullanılarak çevrildi ve hatalar içerebilir. Sayfayı İngilizce görüntülemek için buraya tıkla.

En temel seviyesinde, raycasting bir görünmez ışını bir belirli yön ve belirli bir uzunluk ile belirli bir noktadan göndermektir. Yerleştirildiğinde, ışının bir Vector3 veya BasePart hücresine vurup etkilediğini tespit edebilir

Lazerler yüzüklerin yüzünden ateşlenir ve lazerlerin bir platforma vurup vurmadığını belirleyen ışınlanma yapar. Kaplama lazerler tarafından dokunulduysa geçici olarak yok edilir.

Bir Işın Kullanılması

Class.WorldRoot:Raycast() yöntemi ( workspace:Raycast() ) kullanılarak bir Vector3 ile bir 1> Datatype.Vector31> yönünden bir ışınlanma oluşturabilirsiniz.

Basit Raycast

local rayOrigin = Vector3.new(0, 0, 0)
local rayDirection = Vector3.new(0, -100, 0)
local raycastResult = workspace:Raycast(rayOrigin, rayDirection)

Sıralama

WorldRoot:Raycast() çekirdek içindeki bazı RaycastParams objektlerini kabul eder ve raycast'ın bazı BaseParts , su malzemesini 0> Class.Terrain0> için ortadan kaldırır veya bir

AnahtarAçıklama
FilterDescendantsInstancesArray Array filtrelemeye uygun adayları seçiminde kullanılan nesnelerin soyundan olanlar.
FilterTypeEnum.RaycastFilterTypekullanılacağını belirleyenFilterDescendantsInstancesarray, raycast işleminde kullanılır.
  • Exclude — Her BasePart dışında olanlar düzen içindeki nesnelerin soyundan gelir.
  • Include — Sadece ağaç içindeki nesiller dikkate alınır.
IgnoreWaterRaycasting'e karşı <a href="/reference/engine/datastores">Class.Terrain</a> için şerit çizmeyi düşünüyor olup olmadığını belirleyen bir boşluk değeri.
CollisionGroupRaycasting işlemi için kullanılan çarpıştırma grubunun ismi.
Raycast Filtreleme

local rayOrigin = Vector3.zero
local rayDirection = Vector3.new(0, -100, 0)
local raycastParams = RaycastParams.new()
raycastParams.FilterDescendantsInstances = {script.Parent}
raycastParams.FilterType = Enum.RaycastFilterType.Exclude
raycastParams.IgnoreWater = true
local raycastResult = workspace:Raycast(rayOrigin, rayDirection, raycastParams)

Yönü Hesaplama

uygulanabilir, bir bilinmeyen yön vektörü (rayDirection) hesaplayabilirsiniz, bir bilinen ağız ve hedef kullanır. Bu, bir oyuncu karakterinden diğerine yapılan bir rayın iki nokta arasında yerleştirilmesi gibi değişen iki nokta arasında bir ray kullanırken yararlıdır.

  1. Kökenin yönlendirici bir vektörü, ışının hedefini gösterir:

    rayOrigin + rayDirection = rayDestination

  2. Kuruluşun her iki tarafından rayOrigin ın kaybolmasını önleyin:

    rayOrigin + rayDirectionrayOrigin = 0>rayDestination0> − 3>rayOrigin3>

  3. Işığın yönü, kaynağın yanından hedefi eksen düşük:

    rayDirection = rayDestinationrayOrigin


local rayOrigin = workspace.TestOrigin.Position
local rayDestination = workspace.TestDestination.Position
local rayDirection = rayDestination - rayOrigin
local raycastResult = workspace:Raycast(rayOrigin, rayDirection)

Vuruları Tespit Etme

ışınlanma işlemi bir uygun BasePart veya Terrain hücresine vurursa, bir 1> Datatype.RaycastResult1> nesnesi içerikleri içerir. Test için sonuç olmadan önce, sonuç 4> nil4> değil ve aş

ÖzellikAçıklama
InstanceIşının kesiştiği BasePart veya Terrain hücre.
PositionVector3 ınızınızınızınızınızınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınınının
DistanceIşın kaynağı ve kesişim noktası arasındaki mesafe.
MaterialKavşak noktasındaki Enum.Material veya BasePart ile ilgili Terrain .
NormalVector3 İşlenmiş yüzün normal vektörü.
Raycast İsabet Tespiti

local rayOrigin = Vector3.zero
local rayDirection = Vector3.new(0, -100, 0)
local raycastResult = workspace:Raycast(rayOrigin, rayDirection)
if raycastResult then
print("Instance:", raycastResult.Instance)
print("Position:", raycastResult.Position)
print("Distance:", raycastResult.Distance)
print("Material:", raycastResult.Material)
print("Normal:", raycastResult.Normal)
else
warn("No raycast result!")
end