Işın yayımı

*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, ışın atışı belli bir yönde belirli bir uzunlukla görünmez bir ışın göndermek eylemidir.Bir kez atıldıktan sonra, ışın bir BasePart veya Terrain hücreye vurduğunu tespit edebilirsiniz.

Lazerler yüzen küreler tarafından ateş edilir ve lazerin bir platforma vurup vurmadığını belirleyen raycasting belirler.Lazerler tarafından dokunulan platformlar geçici olarak yok edilir.

Bir ışını WorldRoot:Raycast() yöntemiyle ( Workspace:Raycast() ) bir Vector3 kaynağından bir Vector3 yönünde fırlatabilirsiniz.

Temel Işın Yayımı

local Workspace = game:GetService("Workspace")
local rayOrigin = Vector3.new(0, 0, 0)
local rayDirection = Vector3.new(0, -100, 0)
local raycastResult = Workspace:Raycast(rayOrigin, rayDirection)

uygulanabilir, bilinen bir kaynak ve hedef kullanarak bilinmeyen bir yönlü vektör hesaplayabilirsiniz ( ).Bu, bir ışını bir noktadan diğerine değiştirebilen iki nokta arasında atarken yararlıdır, örneğin bir oyuncu karakterinden diğerine.

  1. Köken artı bir yönlü vektör, ışının varış noktasını gösterir:

    ışınKökeni + ışınYönü = ışınHedefi

  2. rayOrigin eşitliğin her iki tarafından çıkarın:

    ışınKökeni + ışınYönüışınKökeni = ışınHedefiışınKökeni

  3. Işının yönü, kaynağı eksik olarak hedefe eşittir:

    ışın yönü = ışın hedefiışın kaynağı


local Workspace = game:GetService("Workspace")
local rayOrigin = Workspace.TestOrigin.Position
local rayDestination = Workspace.TestDestination.Position
local rayDirection = rayDestination - rayOrigin
local raycastResult = Workspace:Raycast(rayOrigin, rayDirection)

Filtre seçenekleri

isteğe bağlı bir nesnesini kabul eder, böylece ışın atışı belirli 'leri seçerek veya dışlayarak dahil edebilir veya dışlayabilir veya su grubu kullanarak bir çarpışma grubu kullanır.

AnahtarAçıklama
FilterDescendantsInstancesArray nesnelerin torunlarının filtreleme raycasting adaylarında kullanıldığı nesnelerin sayısı
FilterTypeEnum.RaycastFilterType raycast işleminde FilterDescendantsInstances dizi nasıl kullanılacağını belirleyen enum.
  • Exclude — Her BasePart nesnenin dizideki soyundan gelenler hariç tüm **** düşünülür.
  • Include — Sadece BaseParts dizideki nesnelerin soyundan gelenler dikkate alınır.
IgnoreWater Su malzemesiyle ışınlama yapılırken dikkate alınıp alınmayacağını belirleyen Terrain mantığı.
CollisionGroupIşın atma işlemi için kullanılan çarpışma grubu adının dize adı.
Işıncast Filtreleme

local Workspace = game:GetService("Workspace")
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)

Vuruş tespiti

Işın yayını operasyonu elverişli bir BasePart veya Terrain hücreye vurursa, sonuçları içeren bir RaycastResult nesne döndürülür.Bir vuruş için test yapmak için, sonucun nil olmadığını doğrulayın ve gerekli olan aşağıdaki özellikleri kullanın.

ÖzellikAçıklama
InstanceIşının kesiştiği BasePart veya Terrain hücre.
PositionVector3 ışın ve Instance arasındaki kesişimin konumu.
DistanceIşın kaynağı ve kesişme noktası arasındaki mesafe.
MaterialKesişim noktasındaki Enum.Material veya BasePart veya Terrain 'in kesişim noktası.
NormalVector3 kesişen yüzün normal vektörünün.
Işın Yayını Hedef Tespiti

local Workspace = game:GetService("Workspace")
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