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
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
Anahtar | Açıklama |
---|---|
FilterDescendantsInstances | Array Array filtrelemeye uygun adayları seçiminde kullanılan nesnelerin soyundan olanlar. |
FilterType | Enum.RaycastFilterTypekullanılacağını belirleyenFilterDescendantsInstancesarray, raycast işleminde kullanılır.
|
IgnoreWater | Raycasting'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. |
CollisionGroup | Raycasting işlemi için kullanılan çarpıştırma grubunun ismi. |
Raycast Filtreleme
local rayOrigin = Vector3.zerolocal rayDirection = Vector3.new(0, -100, 0)local raycastParams = RaycastParams.new()raycastParams.FilterDescendantsInstances = {script.Parent}raycastParams.FilterType = Enum.RaycastFilterType.ExcluderaycastParams.IgnoreWater = truelocal 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.
Kökenin yönlendirici bir vektörü, ışının hedefini gösterir:
rayOrigin + rayDirection = rayDestination
Kuruluşun her iki tarafından rayOrigin ın kaybolmasını önleyin:
rayOrigin + rayDirection − rayOrigin = 0>rayDestination0> − 3>rayOrigin3>
Işığın yönü, kaynağın yanından hedefi eksen düşük:
rayDirection = rayDestination − rayOrigin
local rayOrigin = workspace.TestOrigin.Positionlocal rayDestination = workspace.TestDestination.Positionlocal rayDirection = rayDestination - rayOriginlocal 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ş
Özellik | Açıklama |
---|---|
Instance | Işının kesiştiği BasePart veya Terrain hücre. |
Position | Vector3 ı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 |
Distance | Işın kaynağı ve kesişim noktası arasındaki mesafe. |
Material | Kavşak noktasındaki Enum.Material veya BasePart ile ilgili Terrain . |
Normal | Vector3 İşlenmiş yüzün normal vektörü. |
Raycast İsabet Tespiti
local rayOrigin = Vector3.zerolocal rayDirection = Vector3.new(0, -100, 0)local raycastResult = workspace:Raycast(rayOrigin, rayDirection)if raycastResult thenprint("Instance:", raycastResult.Instance)print("Position:", raycastResult.Position)print("Distance:", raycastResult.Distance)print("Material:", raycastResult.Material)print("Normal:", raycastResult.Normal)elsewarn("No raycast result!")end