ParticleEmitter
*Konten ini diterjemahkan menggunakan AI (Beta) dan mungkin mengandung kesalahan. Untuk melihat halaman ini dalam bahasa Inggris, klik di sini.
A ParticleEmitter adalah objek khusus yang mengeluarkan partikel 2D yang dapat disesuaikan ke dunia. Untuk mengeluarkan dan menyajikan partikel, itu harus diwarisi ke dalam Class.BasePart
Particles emit automatically when the emitter is Enabled with a non-zero Rate , or manually when the Emit method is called. With a
Secara default, partikel menghadapi kamera, tetapi Orientation dapat diubah untuk menghormati kecepatan partikel alih-alih.
Selama Lifetime dari partikel,
Untuk mempelajari lebih lanjut tentang pembuatan dan kustomisasi emitter partikel, lihat Emitter Partikel.
Contoh Kode
local emitter = Instance.new("ParticleEmitter")
-- Number of particles = Rate * Lifetime
emitter.Rate = 5 -- Particles per second
emitter.Lifetime = NumberRange.new(1, 1) -- How long the particles should be alive (min, max)
emitter.Enabled = true
-- Visual properties
emitter.Texture = "rbxassetid://1266170131" -- A transparent image of a white ring
-- For Color, build a ColorSequence using ColorSequenceKeypoint
local colorKeypoints = {
-- API: ColorSequenceKeypoint.new(time, color)
ColorSequenceKeypoint.new(0, Color3.new(1, 1, 1)), -- At t=0, White
ColorSequenceKeypoint.new(0.5, Color3.new(1, 0.5, 0)), -- At t=.5, Orange
ColorSequenceKeypoint.new(1, Color3.new(1, 0, 0)), -- At t=1, Red
}
emitter.Color = ColorSequence.new(colorKeypoints)
local numberKeypoints = {
-- API: NumberSequenceKeypoint.new(time, size, envelop)
NumberSequenceKeypoint.new(0, 1), -- At t=0, fully transparent
NumberSequenceKeypoint.new(0.1, 0), -- At t=.1, fully opaque
NumberSequenceKeypoint.new(0.5, 0.25), -- At t=.5, mostly opaque
NumberSequenceKeypoint.new(1, 1), -- At t=1, fully transparent
}
emitter.Transparency = NumberSequence.new(numberKeypoints)
emitter.LightEmission = 1 -- When particles overlap, multiply their color to be brighter
emitter.LightInfluence = 0 -- Don't be affected by world lighting
-- Speed properties
emitter.EmissionDirection = Enum.NormalId.Front -- Emit forwards
emitter.Speed = NumberRange.new(0, 0) -- Speed of zero
emitter.Drag = 0 -- Apply no drag to particle motion
emitter.VelocitySpread = NumberRange.new(0, 0)
emitter.VelocityInheritance = 0 -- Don't inherit parent velocity
emitter.Acceleration = Vector3.new(0, 0, 0)
emitter.LockedToPart = false -- Don't lock the particles to the parent
emitter.SpreadAngle = Vector2.new(0, 0) -- No spread angle on either axis
-- Simulation properties
local numberKeypoints2 = {
NumberSequenceKeypoint.new(0, 0), -- At t=0, size of 0
NumberSequenceKeypoint.new(1, 10), -- At t=1, size of 10
}
emitter.Size = NumberSequence.new(numberKeypoints2)
emitter.ZOffset = -1 -- Render slightly behind the actual position
emitter.Rotation = NumberRange.new(0, 360) -- Start at random rotation
emitter.RotSpeed = NumberRange.new(0) -- Do not rotate during simulation
-- Create an attachment so particles emit from the exact same spot (concentric rings)
local attachment = Instance.new("Attachment")
attachment.Position = Vector3.new(0, 5, 0) -- Move the attachment upwards a little
attachment.Parent = script.Parent
emitter.Parent = attachment
Rangkuman
Properti
Mengukur acelerasi sumbu global semua partikel aktif, diukur dalam stud per detik persegi.
Skala cahaya yang dipancarkan dari emitter ketika ParticleEmitter.LightInfluence adalah 0.
Mengukur warna dari semua partikel aktif di seluruh hidup mereka.
Mendeterminas tingkat di mana partikel akan kehilangan setengah kecepatan mereka melalui degradasi eksponensial.
Mendeterminas wajah objek yang berasal dari.
Mengukur apakah partikel dilepaskan dari emitter.
Mengukur animasi teks buku balik cepat dalam frame per detik.
Pesan kesalahan untuk ditampilkan jika Texture tidak kompatibel dengan buku flip.
Mengubah ukuran dan orientasi halaman. Harus menjadi Tidak, Grid2x2, Grid4x4, atau Grid8x8.
Mengidentifikasi jenis animasi buku balik. Harus menjadi Loop, OneShot, PingPong, atau Random.
Menentukan apakah animasi dimulai pada frame acak yang dipilih per partikel alih-alih selalu dimulai di frame zero.
Mendefinisikan rentang usia acak untuk partikel baru yang dipancarkan.
Menentukan seberapa banyak warna partikel dicampur dengan warna di belakang mereka.
Mengukur seberapa banyak partikel yang dipengaruhi oleh cahaya lingkungan.
Menentukan apakah partikel bergerak keras dengan bagian yang mereka emittasi.
Menguraikan cara menyesuaikan partikel.
Mengukur jumlah partikel yang dikeluarkan per detik.
Mengukur rentang kecepatan sudut dari partikel yang dikeluarkan, diukur dalam derajat per detik.
Mengukur rentang rotasi dalam derajat untuk partikel baru yang dipancarkan.
Tetapkan bentuk emitter menjadi kotak, bola, silinder, atau disc.
Mengatur apakah partikel hanya bertindak ke luar, ke dalam, atau ke kedua arah.
Mempengaruhi emisi partikel dari silinder, disk, bola, dan bentuk kotak.
Tetapkan emisi partikel ke emisi volumen atau permukaan saja.
Mengukur ukuran dunia per individu kehidupan partikel.
Menentukan rentang kecepatan acak (minimum hingga maksimum) di mana partikel baru akan bermittle, diukur dalam stud per detik.
Mendeterminas sudut di mana partikel dapat dipancarkan secara acak, diukur dalam derajat.
Memungkinkan skalibrasi non-uniform partikel, kurva-kontrol selama hidup mereka.
Mengukur gambar yang dihasilkan pada partikel.
Nilai antara 0 dan 1 yang mengontrol kecepatan efek partikel.
Mendeterminas transparansi partikel di atas kehidupan mereka masing-masing.
Menentukan seberapa banyak kecepatan orang tua diwarisi oleh partikel saat dipancarkan.
Apakah partikel yang dikeluarkan mengikuti vektor Workspace.GlobalWind.
Mengukur posisi render ke depan/belakang partikel; digunakan untuk mengontrol apa yang rendah partikel rendah di atas/bawah.
Metode
Bersihkan semua partikel yang telah dikeluarkan.
Mengeluarkan jumlah tertentu dari partikel.
Properti
Acceleration
Properti Akselerasi menentukan bagaimana Speed dari partikel berubah selama hidup mereka. Ini di definisikan menggunakan Vector3 untuk menentukan akselerasi di sumbu 1>X1>
Akselerasi akan memperlambat partikel jika vector menunjuk ke arah yang berlawanan EmissionDirection di mana mereka dikeluarkan. Jika tidak, itu akan mempercepat mereka.
Brightness
Skala cahaya yang dipancarkan dari emitter ketika ParticleEmitter.LightInfluence adalah 0.
Color
Properti Warna menentukan warna dari semua partikel aktif di seluruh hidup mereka. Warna diterapkan pada Texture saat rendah dan menggunakan tekstur alfa bersama dengan emitter's Class.ParticleEmitter.Trans
Mengubah nilai ini menghasilkan semua partikel yang dikeluarkan oleh emitter, baik saat ini maupun masa depan.
Ketika properti ini menggunakan gradien ColorSequence, warna hadiah partikel ditentukan dengan secara lini menginterpolasi pada urutan menggunakan usia partikel dan total usia penggunaannya. Misalnya, jika partikel 2 detik yang baru saja muncul dan memiliki usia 4 detik, warnanya akan menjadi apa pun 50% dari jalan melalui
Drag
Properti Drag menentukan tingkat kehilangan kecepatan per detik yang dihasilkan oleh partikel individual melalui pemadaman eksponensial. Drag diterapkan dengan menyesuaikan kecepatan yang diharapkan dari Speed dan kecepatan warisan dari orang tua dari Class.Part
EmissionDirection
Properti EmissionDirection menentukan wajah ( Class.ParticleEmitter.Speed|Speed) dari objek utama yang mengirimkan partikel. A negative Class.ParticleEmitter.Speed|Speed berarti partikel mengirim dalam arah yang berlawanan. 1> Class.ParticleEmitter.SpreadAngle|SpreadAngle1> lebih bervariasi arah emisi.
Jika Anda menambahkan ParticleEmitter ke Attachment , yang memiliki arah, Anda dapat menggulir bagian yang disertakan sendiri ( Attachment.Orientation ) alih-alih menggunakan propperti ini.
Enabled
Properti Diaktifkan menentukan apakah partikel mengirim dari emitter. Mengatur ini ke false menghentikan partikel lainnya muncul, tetapi setelan ini tetap aktif sampai kadaluarsa. Properti ini berguna ketika Anda memiliki efek partikel prasejah yang ingin Anda tinggalkan saat Anda membutuhkan untuk mengirim partikel.
Jika Anda ingin menghapus semua partikel dari emitter yang dinonaktifkan, panggil Clear() . Kemudian, jika diinginkan, panggil Emit() di emitter untuk menghasilkan dan menyajikan partikel.
FlipbookFramerate
FlipbookFramerate property menentukan seberapa cepat animasi teksturnya buku balik dalam frame per detik. Seperti Lifetime, Anda dapat menetapkan rentang minimum dan maksimum untuk menyelaraskan framerate buku balik, dengan rentang maksimum 30 frame per detik.
FlipbookIncompatible
Pesan kesalahan untuk ditampilkan jika Texture tidak kompatibel dengan buku Flip. Textur buku Flip harus berukuran piksel 8×8, 16×16, 32×32, 64×64, 128×128, 256×256, 512×512, atau 1024×
FlipbookLayout
FlipbookLayout property menentukan layout teks. Ini dapat menjadi nilai apa pun dari Enum.ParticleFlipbookLayout 枚:
- Tidak ada – Nonaktifkan fitur buku balik dan gunakan tekstur sebagai tekstur statis tunggal di seluruh hidup partikel.
- Grid2x2 – 2×2 frame untuk animasi 4-frame.
- Grid4x4 – 4×4 frame untuk animasi 16- frame.
- Grid8x8 – 8×8 frame untuk animasi 64-frame.
FlipbookMode
Propinsi FlipbookMode menentukan jenis animasi flipbook. Ini dapat menjadi apa pun dari Enum.ParticleFlipbookMode enum:
- Loop – Bermain secara terus-menerus melalui semua frame, dimulai dari frame pertama setelah bermain yang terakhir.
- OneShot – Bermain melalui animasi hanya sekali di seluruh hidup partikel. Dengan pengaturan ini, propietas FlipbookFramerate tidak berl
- PingPong – Bermain dari satu frame pertama hingga satu frame terakhir, lalu berbalik dari satu frame terakhir ke satu frame pertama, mengulangi selama Lifetime dari partikel.
- Acak – Mainkan frame dalam urutan acak, menyebut/menghilang dari satu frame ke frame berikutnya. Ini dapat berguna untuk tekstur partikel organik di framerate rendah, seperti bintang perlahan berkedip antara subtly berbeda bentuk.
FlipbookStartRandom
Properti FlipbookStartRandom menentukan apakah setiap partikel dimulai di frame acak animasi alih-alih selalu dimulai di frame pertama. Salah satu kasus penggunaan adalah mengaktifkan properti ini dan juga menetapkan FlipbookFramerate ke nol, menyebabkan setiap partikel yang dikeluarkan menjadi
Lifetime
プロperti Masa hidup menentukan usia maksimum dan minimum untuk partikel baru. Masa hidup dihitung berdasarkan per partikel, jadi jika nilai ini diubah, partikel yang ada akan tetap aktif sampai usia pilihan acak mereka berakhir. Masa hidup 0 akan mencegah partikel dari menghasilkan sama semua.
LightEmission
LightEmission property menentukan persamaan pemadaman warna Texture dengan warna di belakang mereka. Sebuah nilai 0 menggunakan mode pemadaman normal sementara nilai 1 menggunakan mode pemadaman tambahan. Saat diubah, nilai ini segera mempengaruhi semua partikel yang dimiliki emitter, baik saat ini maupun masa depan.
Properti ini seharusnya tidak bingung dengan LightInfluence yang menentukan bagaimana partikel terpengaruh oleh cahaya lingkungan.
Properti ini tidak menyebabkan partikel untuk menyala lingkungan di sekitar mereka. Untuk melakukan itu, pertimbangkan menggunakan PointLight .
LightInfluence
Properti LightInfluence menentukan berapa banyak cahaya lingkungan yang mempengaruhi warna partikel individual saat merendahkan. Harus berada di rentang 0–1; perilaku nilai di luar rentang ini tidak di definisikan. Pada 0, partikel tidak terpengaruh oleh cahaya sama sekali (mereka menyimpan kecerahan penuh); pada 1, partikel terpengaruh sepenuhnya oleh
Secara default, nilai ini adalah 1 jika ditambahkan dengan alat Studio. Jika ditambahkan menggunakan Instance.new(), itu adalah 0.
LocalTransparencyModifier
LockedToPart
Properti Terkunci ke Bagian menentukan apakah partikel "tetap" pada sumber emisi (Attachment atau BasePart ke mana 1> Class.ParticleEmitter1> bergabung). Jika 4> true4>, partikel aktif akan bergerak dalam langkah terkunci jika objek utama bergerak.
Alternatifnya, pertimbangkan menggunakan property VelocityInheritance dengan nilai 1 yang mungkin lebih sesuai untuk beberapa efek.
Orientation
Orientasi property menentukan mode orientasi mana yang harus digunakan untuk geometri partikel emitter.
<tbody><tr><td><b>Menggunakan Kamera Depan</b></td><td>Standar papan tampilan kamera-ke-bilah; perilaku default.</td></tr><tr><td><b>Menghadapi Kamera Dunia Up</b></td><td>Menghadapi kamera, tetapi berputar hanya di sumbu vertikal ke atas dunia <b>Y</b>.</td></tr><tr><td><b>Kecepatan Paralel</b></td><td>Diatur paralel dengan arah gerakan mereka.</td></tr><tr><td><b>Kecepatan Perpendikular</b></td><td>Diatur perpendikular ke arah gerakan mereka.</td></tr></tbody>
Orientasi | Perilaku Partikel |
---|
Rate
Properti Tingkatkan menentukan berapa banyak partikel yang dipancarkan per detik saat emitter adalah Enabled . Ini adalahbalik dari frekuensi, yang berarti bahwa tingkat 5 emits sebuah partikel setiap 0,2 detik. Saat diubah, property ini tidak berpengaruh pada partikel aktif.
RotSpeed
Properti RotSpeed menentukan rentang kecepatan sudut acak untuk partikel baru yang dipancarkan, diukur dalam derajat per detik. Kecepatan sudut acak dipilih saat emisi, jadi mengubah ke property ini tidak mengubah partikel aktif. Kecepatan sudut ini, bersama dengan Rotation, menentukan sudut sudut image render.
Particles dengan kecepatan sudut yang sangat tinggi dapat tampak berputar lebih lambat atau tidak sama semua, karena sudut rotasi disinkronisasi dengan kecepatan render software. Misalnya, jika partikel berputar 360 derajat setiap frame, tidak akan ada perubahan yang terlihat dalam rotasi.
Rotation
Properti Rotasi menentukan rentang rotasi dalam derajat untuk partikel baru yang dipancarkan, diukur dalam derajat.Nilai positif ditetapkan dalam arah jam tangan.Properti ini biasanya diatur menjadi [0, 360] untuk memberikan rotasi yang benar-benar acak kepada partikel baru. Class.ParticleEmitter.RotSpeed
Perubahan pada nilai ini hanya mengubah partikel baru; partikel yang ada menjaga rotasi di mana mereka asli diterbitkan.
Properti Bentuk mengatur bentuk emitter ke kotak, bola, silinder, atau disc. Setelah Anda membuat pilihan, Anda dapat menyesuaikan ShapeStyle , ShapeInOut ,
ShapeInOut
Mengatur apakah partikel menyebar ke luar hanya, ke dalam hanya, atau ke kedua arah. Untuk contoh visual, lihat di sini.
ShapePartial
Tergantung pada nilai Shape, nilai ini melakukan actionyang berbeda:
Untuk silinder, itu menentukan proporsi radius atas. Sebuah nilai 0 berarti bagian atas silinder memiliki radius nol, menjadikannya kubus. Sebuah nilai 1 berarti silinder tidak memiliki deformasi.
Untuk disk, itu menentukan persentase radius dalam. Sebuah nilai 0 berarti disk sepenuhnya ditutup (lingkaran/ellipse), sementara nilai 1 hanya terjadi di rim luar tertutup dari disk.Nilai antara 0 dan 1 terjadi dari anting dengan ketebuatan tertentu.
Untuk spheres, itu meng指定 sudut setengah bola di mana partikel bermittle.Nilai 1 berarti partikel bermittle dari seluruh spheres; nilai 0,5 berarti partikel bermittle dari setengah dome; nilai 0 berarti partikel hanya bermittle dari satu titik di kutub utara.
Untuk contoh visual, lihat di sini.
ShapeStyle
Mengatur emisi partikel menjadi emisi volumen atau hanya emisi permukaan. Untuk contoh visual, lihat di sini.
Size
Properti Ukuran menentukan ukuran dunia dari semua partikel aktif di seluruh hidup mereka. Properti ini mewakili dimensi dari Texture untuk setiap partikel. Ini adalah NumberSequence yang bekerja mirip dengan 1> Class.ParticleEmitter.Transparency|Transparency1>
Ukuran hadir partikel ditentukan dengan menginterpolasi secara lini menggunakan usia partikel dan usia totalnya. Misalnya, jika partikel muncul 2 detik yang lalu dan memiliki usia 4 detik, ukurannya akan menjadi apa pun 50% dari jalan melalui Datatype.
Speed
Properti Kecepatan menentukan rentang kecepatan acak (minimum hingga maksimum) di mana partikel baru akan bermitra, diukur dalam stud per detik. Kecepatan setiap partikel dipilih saat bermitra dan berlaku di EmissionDirection . Nilai negatif menyebabkan partikel berpergian ke arah terbalik.
Catat bahwa mengubah Speed tidak mengubah partikel aktif dan mereka menyimpan kecepatan yang mereka miliki. Namun, Acceleration , Drag dan 1> Class
SpreadAngle
Propiedad SpreadAngle menentukan sudut-sudut acak di mana partikel dapat dikeluarkan. Misalnya, jika EmissionDirection adalah Top (+ 1>Y1>), ini 4> Datatype.Vector2
Mengatur satu sumbu ke 360 akan menyebabkan partikel untuk bermitra di semua arah dalam satu lingkaran . Mengatur keduanya ke 360 akan menyebabkan partikel untuk bermitra di semua arah dalam satu bola .
Squash
Memungkinkan skalierung non-uniform partikel, kurva-kontrol over their lifetime.Nilai lebih besar dari 0 menyebabkan partikel untuk mencucur secara horizontal dan menumbuh secara vertikal, sementara nilai kurang dari 0 menyebabkan partikel untuk mencucur secara horizontal dan menumpuhkan vertikal.
Texture
Properti Teksur menentukan gambar yang di render pada partikel. Gambar ini dipengaruhi oleh Color, Transparency, 1> Class.ParticleEmitter.LightInfluence|LightInfluence1>, dan
TimeScale
Nilai antara 0 dan 1 yang mengontrol kecepatan efek partikel. Pada 1, itu berjalan dengan kecepatan normal; pada 0,5 itu berjalan dengan kecepatan setengah; pada 0 itu membekukan dalam waktu.
Transparency
Properti Transparansi menentukan transparansi dari semua partikel aktif di seluruh hidup mereka. Ini bekerja mirip dengan Size dalam bagaimana itu mempengaruhi partikel dalam waktu. Secara render, nilai 0 benar-benar terlihat (opake) dan nilai 1 benar-benar tidak terlihat (tidak render sama sekali).
Transparansi hadir partikel ditentukan oleh interpolasi secara lini menggunakan usia partikel dan usia totalnya. Misalnya, jika partikel muncul 2 detik yang lalu dan memiliki usia 4 detik, transparansi akan menjadi apa pun 50% dari jalan melalui Datatype.
VelocityInheritance
Propiedad VelocityInheritance menentukan berapa banyak dari bagian orang tua's Velocity yang diwarisi oleh partikel saat mereka dikeluarkan. Sebuah nilai 0 berarti bahwa tidak ada kecepatan yang diwarisi, sementara nilai 1 berarti partikel akan memiliki kecepatan persis sama dengan orang tua
Ketika digunakan bersama dengan Drag, emitter partikel dapat muncul untuk "shed" partikel dari bagian bergerak.
WindAffectsDrag
Jika benar, partikel yang dikeluarkan mengikuti vector Workspace.GlobalWind. Hanya berlaku jika propinsi Drag lebih besar dari 0.
ZOffset
ZOffset property menentukan posisi render ke depan-belakang dari partikel, dalam studs, tanpa mengubah ukuran mereka di layar. Saat diubah, propperti ini mengubah kedua propietas saat ini dan masa depan. Catat bahwa propperti ini menerima nilai fraksional; itu bukan seperti GuiObject.ZIndex (angka).
Nilai positif menarik partikel lebih dekat ke kamera dan nilai negatif menarik partikel menjauh.Nilai negatif yang cukup dapat menyebabkan partikel rendah di dalam atau di belakang bagian tertua.
Metode
Clear
Metode Bersihkan menghapus semua partikel yang ada yang telah dipancarkan oleh ParticleEmitter melalui emisinya (non-零 Rate di emitter) atau melalui 1> Class.ParticleEmitter:Emit()1> .
Memberikan nilai
Contoh Kode
local emitter = script.Parent
while true do
emitter:Clear()
emitter:Emit(10)
task.wait(2)
end
Emit
Metode Emit akan menyebabkan ParticleEmitter untuk segera menghasilkan jumlah partikel yang diberikan.
Parameter
Jumlah partikel untuk dikeluarkan.
Memberikan nilai
Contoh Kode
local RunService = game:GetService("RunService")
local emitter = script.Parent
local part = emitter.Parent
local PARTICLES_PER_STUD = 3
local lastPosition = part.Position
local distance = 0
local function onStep()
local displacement = part.Position - lastPosition
distance = distance + displacement.magnitude
local n = math.floor(distance * PARTICLES_PER_STUD)
emitter:Emit(n)
distance = distance - n / PARTICLES_PER_STUD
lastPosition = part.Position
end
RunService.Stepped:Connect(onStep)
emitter.Enabled = false
local emitter = script.Parent
while true do
emitter:Clear()
emitter:Emit(10)
task.wait(2)
end