Beam

Artık kullanılmayanları göster

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

Bir Işın nesnesi, aralarında bir doku çizerek iki Attachments bağlar.

Görüntülemek için, bir ışın Workspace ile birlikte Attachment0 ve Attachment1 özelliklerinin Attachments ayrıca Workspace düştüğü çizgiden aşağıya inmelidir.

Işının görünümü, aşağıda belirtilen özellik yelpazesi kullanılarak özelleştirilebilir. Ayrıca görsel örnekler için Işınlar rehberine de bakın.

Işın Falsozluğu

Işınlar, dört kontrol noktası tarafından oluşturulan kübik bir Bézier eğrisi kullanmak üzere yapılandırılır.Bu, düz çizgilere sınırlı olmadıkları ve ışının eğrisinin değiştirilerek değiştirilebildiği anlamına gelir , ve ışının yönünün değiştirilmesiyle.

Beam curvature diagram

Kod Örnekleri

This code sample demonstrates how a Beam effect can be created from scratch by creating a Beam, setting all of its properties and configuring it's Attachments.

Creating a Beam From Scratch

-- create attachments
local att0 = Instance.new("Attachment")
local att1 = Instance.new("Attachment")
-- parent to terrain (can be part instead)
att0.Parent = workspace.Terrain
att1.Parent = workspace.Terrain
-- position attachments
att0.Position = Vector3.new(0, 10, 0)
att1.Position = Vector3.new(0, 10, 10)
-- create beam
local beam = Instance.new("Beam")
beam.Attachment0 = att0
beam.Attachment1 = att1
-- appearance properties
beam.Color = ColorSequence.new({ -- a color sequence shifting from white to blue
ColorSequenceKeypoint.new(0, Color3.fromRGB(255, 255, 255)),
ColorSequenceKeypoint.new(1, Color3.fromRGB(0, 255, 255)),
})
beam.LightEmission = 1 -- use additive blending
beam.LightInfluence = 0 -- beam not influenced by light
beam.Texture = "rbxasset://textures/particles/sparkles_main.dds" -- a built in sparkle texture
beam.TextureMode = Enum.TextureMode.Wrap -- wrap so length can be set by TextureLength
beam.TextureLength = 1 -- repeating texture is 1 stud long
beam.TextureSpeed = 1 -- slow texture speed
beam.Transparency = NumberSequence.new({ -- beam fades out at the end
NumberSequenceKeypoint.new(0, 0),
NumberSequenceKeypoint.new(0.8, 0),
NumberSequenceKeypoint.new(1, 1),
})
beam.ZOffset = 0 -- render at the position of the beam without offset
-- shape properties
beam.CurveSize0 = 2 -- create a curved beam
beam.CurveSize1 = -2 -- create a curved beam
beam.FaceCamera = true -- beam is visible from every angle
beam.Segments = 10 -- default curve resolution
beam.Width0 = 0.2 -- starts small
beam.Width1 = 2 -- ends big
-- parent beam
beam.Enabled = true
beam.Parent = att0

Özet

Özellikler

Yöntemler

  • Işının dokuma döngüsünün mevcut ofisini ayarlar. Sets the current offset of the beam's texture cycle.

Özellikler

Attachment0

Paralel oku

Işının kaynağı. Attachment ışının kaynağı.Bu ek, ışının kübik Bézier eğrisindeki ilk kontrol noktasıdır; yönü, CurveSize0 özelliğinin yanı sıra, ikinci kontrol noktasının konumunu belirler.Daha fazla ayrıntı için Işınlar bakın.

Işının sona erdiği yer için Attachment , görün Attachment1 .

Attachment1

Paralel oku

Işının Attachment sona erdiği yer.Bu ek, ışının kübik Bézier eğrisindeki dördüncü ve son kontrol noktasıdır; yönü, CurveSize1 özelliğinin yanı sıra, üçüncü kontrol noktasının konumunu belirler.Daha fazla ayrıntı için Işınlar bakın.

Işının kaynağı olduğu Attachment için, bakınız Attachment0 .

Brightness

Paralel oku

LightInfluence 1'den az olduğunda, ışının yayıldığı ışığı ölçeklendirir.Bu özellik varsayılan olarak 1'dir ve 0 ile 10000 arasındaki herhangi bir sayıya ayarlanabilir.LightInfluence değerini artırmak, bu özelliğin değerinin etkisini azaltır.

Paralel oku

Işının Segments boyunca rengini belirler.Eğer Texture ayarlandıysa, bu renk, ışının dokusuna uygulanacaktır.Eğer hiçbir Texture ayarı yapılmazsa, Beam bu özellikle uyumlu bir katı çizgi olarak görünecektir.

Bu özellik bir ColorSequence , renklerin ışın uzunluğu boyunca değiştirilebilmesine izin veren bir özelliktir.Bir ışına uygulandığında, resimde gösterilen sonuçverecek olan aşağıdaki ColorSequence düşünün.


local colorSequence = ColorSequence.new({
ColorSequenceKeypoint.new(0, Color3.fromRGB(255, 0, 0)), -- Kırmızı
ColorSequenceKeypoint.new(0.5, Color3.fromRGB(0, 188, 203)), -- Turkuaz
ColorSequenceKeypoint.new(1, Color3.fromRGB(196, 0, 255)), -- Sarı
}
)

Işının renklenmesinin sayısına da bağlı olduğunu unutmayın Segments ın Beam sayısına sahip olması.Işının her bir bölümü yalnızca iki renk arasında bir geçiş gösterebilir.Bu nedenle bir Beam rengin doğru görüntülenmesi için en azından n-1 bölümlerinin olması gerekecek, n nerede ColorSequenceKeypoints sayısı ColorSequence .

CurveSize0

Paralel oku

Attachment0 ile birlikte, ışının Bézier eğrisindeki ikinci kontrol noktasının konumunu belirler. Daha fazla ayrıntı için Işınlar bakın.

Bu noktanın konumu şu denklemle belirlenebilir:


local controlPoint2 = Beam.Attachment0.WorldPosition + (Beam.Attachment0.CFrame.RightVector * Beam.CurveSize0)

CurveSize1

Paralel oku

Attachment1 ile birlikte, ışının Bézier eğrisindeki üçüncü kontrol noktasının konumunu belirler. Daha fazla ayrıntı için Işınlar bakın.

Bu noktanın konumu şu denklemle belirlenebilir:


local controlPoint3 = Beam.Attachment1.WorldPosition - (Beam.Attachment1.CFrame.RightVector * Beam.CurveSize1)

Enabled

Paralel oku

Işının görülebilir olup olmadığını belirler.

Bu özellik false olarak ayarlanırsa, ışının Segments 'si görüntülenmez.

FaceCamera

Paralel oku

Bir Beam 3B uzayda mevcut 2B bir projeksiyondur, yani her açıdan görülemeyebilir. Yüz Kamerası özelliği, true olarak ayarlanırken, ışın daima CurrentCamera yönünde olduğundan emin olur, yönü ne olursa olsun.

LightEmission

Paralel oku

Işının renklerinin arkasındaki renklerle ne ölçüde karıştırılacağını belirler.0 ile 1 arasında ayarlanmalıdır.0 değeri normal karışım modlarını ve 1 değeri ekleyici karışımı kullanır.

Bu özellik, çubuğun çevresel ışıktan nasıl etkilendiğini belirleyen LightInfluence ile karıştırılmamalıdır.

Bu özellik ışını çevreyi aydınlatmasına neden olmaz .

LightInfluence

Paralel oku

Işının çevrenin aydınlatması tarafından etkilendiği dereceyi belirler, 0 ile 1 arasında sıkıştırılır.0 olduğunda, ışın çevrenin aydınlatmasından etkilenmeyecektir.1 olduğunda, aydınlatma tarafından tamamen etkilenecek ve bir BasePart gibi olacaktır.

Ayrıca bakın LightEmission , ışının renklerinin arkasındaki renklerle ne ölçüde birleştirileceğini belirleyen.

LocalTransparencyModifier

Gizli
Çoğaltılmamış
Paralel oku

Segments

Paralel oku

Mükemmel bir eğrisi olmak yerine, bir ışın düz segmentlerden oluşur.Daha fazla segment, eğrinin çözünürlüğünün daha yüksek olması. Segmentler özelliği, ışının kaç tane düz segmentten oluştuğunu, varsayılan değeri 10 ile, belirler.

Color ve Transparency özelliklerinin doğru görüntülenmesi için belirli bir sayıda segment gerektirdiğini unutmayın.Bunun nedeni, her bir segmentin sadece iki renk veya saydamlık arasında bir geçiş gösterebilmesidir.Bu nedenle bir Beam en azından n-1 segmentleri doğru görüntülemek için gerektirir, nerede n ışının Color ve Transparency ile bağlantılı anahtar noktası sayısıdır.

Texture

ContentId
Paralel oku

Işın üzerinde görüntülenecek dokunun içeriği ID'si.Bu özellik ayarlanmazsa, ışın katı bir çizgi olarak görüntülenir; bu ayrıca, dokunun geçerli bir içerik kimliğine ayarlanması veya dokunun ilişkili görüntünün henüz yüklenmemesi durumunda da gerçekleşir.

Doku görünümü, Color ve Transparency dahil diğer ışın özellikleriyle daha da değiştirilebilir.

Doku ölçeklenmesi TextureMode , TextureLength , Width0 ve Width1 özellikleri tarafından belirlenir.

TextureLength

Paralel oku

Işının dokusunun uzunluğunu ayarlar, TextureMode 'ye bağlı olarak.

TextureMode

Paralel oku

Bu özellik, yanında TextureLength , bir ışının Texture tekrarlanmasını nasıl belirler.

veya olarak ayarlanırsa, dokulu tekrarlar, ışının genel uzunluğuna eşit olacaktır (in studs) bölünerek.

TextureMode diagram with Wrap mode

Enum.TextureMode.Stretch olarak ayarlanırsa, dokunma tekniği, ışının genel uzunluğu boyunca TextureLength kez tekrarlanacaktır.

TextureMode diagram with Stretch mode

TextureSpeed

Paralel oku

Texture görüntünün ışın boyunca hareket ettiği hızı belirler.Bu özellik pozitif bir değer olduğunda, ışının dokusu Attachment0 'dan Attachment1 'a taşınacaktır.Bu yön, bu özelliği negatif bir sayıya ayarlayarak tersine çevrilebilir.

Transparency

Paralel oku

Işının segmentleri arasındaki transparansını belirler.Bu özellik bir NumberSequence , ışının uzunluğu boyunca değişen transparansın yapılandırılmasına izin veriyor.

Bir ışına uygulandığında, resmedilen sonuçverecek olan aşağıdaki NumberSequence düşünün.


local numberSequence = NumberSequence.new({
NumberSequenceKeypoint.new(0, 0), -- Koyu
NumberSequenceKeypoint.new(0.5, 1), -- Şeffaf
NumberSequenceKeypoint.new(1, 0), -- Koyu
}
)

Işının transparansının da Segments sayısına bağlı olduğunu unutmayın.Işının her bir bölümü yalnızca iki saydamlık arasında bir geçiş gösterebilir.Bu nedenle, bir ışının doğru görüntülenmesi için en azından n-1 segmentlere sahip olması gerekecektir, n nerede NumberSequenceKeypoints , NumberSequence 'in sayısıdır.

Width0

Paralel oku

Kökenindeki ışının genişliği ( Attachment0 ), milimetre cinsinden. Işının genişliği sonunda Width1 milimetreye lineer olarak değişecektir ( Attachment1 ).

Width1

Paralel oku

Sonunda ışının genişliği ( Attachment1 ), çiviler içinde. Işının genişliği, kaynağındaki Width0 çivilerden lineer olarak değişecek ( Attachment0 ).

ZOffset

Paralel oku

Mesafe, çivilerle, ışın görüntüsü CurrentCamera 'ye göre ofset edilir.0 olduğunda, ışın Attachment0 ve Attachment1 arasındaki standart konumunda görüntülenecektir. ZOffset pozitif veya negatif olabilir.

Bu özellik, aynı Attachments arasında çok sayıda Beams kullanırken "Z‑savaş"tan kaçınmak için özellikle yararlıdır.

Kod Örnekleri

This code sample uses the Beam.ZOffset property to layer multiple beams between the same attachments.

Layering Beams

-- Create beams
local beam1 = Instance.new("Beam")
beam1.Color = ColorSequence.new(Color3.new(1, 0, 0))
beam1.FaceCamera = true
beam1.Width0 = 3
beam1.Width1 = 3
local beam2 = Instance.new("Beam")
beam2.Color = ColorSequence.new(Color3.new(0, 1, 0))
beam2.FaceCamera = true
beam2.Width0 = 2
beam2.Width1 = 2
local beam3 = Instance.new("Beam")
beam3.Color = ColorSequence.new(Color3.new(0, 0, 1))
beam3.FaceCamera = true
beam3.Width0 = 1
beam3.Width1 = 1
-- Layer beams
beam1.ZOffset = 0
beam2.ZOffset = 0.01
beam3.ZOffset = 0.02
-- Create attachments
local attachment0 = Instance.new("Attachment")
attachment0.Position = Vector3.new(0, -10, 0)
attachment0.Parent = workspace.Terrain
local attachment1 = Instance.new("Attachment")
attachment1.Position = Vector3.new(0, 10, 0)
attachment1.Parent = workspace.Terrain
-- Connect beams
beam1.Attachment0 = attachment0
beam1.Attachment1 = attachment1
beam2.Attachment0 = attachment0
beam2.Attachment1 = attachment1
beam3.Attachment0 = attachment0
beam3.Attachment1 = attachment1
-- Parent beams
beam1.Parent = workspace
beam2.Parent = workspace
beam3.Parent = workspace

Yöntemler

SetTextureOffset

()

Bir ışının dokuma döngüsünün ofseti, dokuma animasyonunun ilerlemesini temsil eder.Bu yöntem, ışının dokuma döngüsünün mevcut ofisini ayarlar; bu nedenle, döngüyü sıfırlamak için 0 ı geçerek offset parametresini yeniden tanımlayabilirsiniz.

Notlar

  • Verdiğiniz offset parametresinin 0 ile 1 arasında bir değer olması beklenir, ancak daha yüksek değerler kullanılabilir.
  • Doku döngüsü 0 ve 1'de sarılır, yani ofset 0 veya 1 olduğunda doku aynı konumdadır.
  • Texture özelliği ayarlanmazsa, bu yöntem hiçbir şey yapmaz.
  • Kaydırmanın artırılması, TextureSpeed özelliğinin ters yönünde hareket edecek ve dokuyu, TextureSpeed daha büyük olduğunda dokunun animasyon yönüne doğru hareket edecek, yani dokunun animasyon yönü 0'dan büyük olduğunda dokuyu hareket ettirecek.

Parametreler

offset: number

Doku döngüsünün istediği ofset.

Varsayılan değer: 0

Dönüşler

()

Etkinlikler