ParticleEmitter

Tampilkan yang Tidak Digunakan Lagi

*Konten ini diterjemahkan menggunakan AI (Beta) dan mungkin mengandung kesalahan. Untuk melihat halaman ini dalam bahasa Inggris, klik di sini.

Sebuah Pemancar Partikel adalah objek khusus yang memancarkan partikel 2D yang dapat disesuaikan ke dunia.Untuk mengeluarkan dan menampilkan partikel, harus diparentkan ke BasePart atau Attachment dalam bagian seperti itu.Ketika diasuh ke BasePart , partikel muncul secara acak di dalam kotak batas bagian atau bentuk ; ketika diasuh ke Attachment , partikel muncul dari posisi lampiran.

Partikel dikeluarkan secara otomatis ketika emitor adalah Enabled dengan non-nol Rate , atau secara manual ketika metode Emit dipanggil.Dengan non-nol Speed , partikel diatur dalam gerakan ke luar dan/atau ke dalam, tergantung pada properti ShapeInOut.

Secara default, partikel menghadap kamera, tetapi Orientation dapat dimodifikasi untuk menghormati kecepatan partikel sebagai gantinya.

Selama Lifetime dari partikel, mereka dapat mengubah penampilan sesuai dengan Color dan Size.Gerakan mereka dapat berubah seiring waktu sesuai dengan properti Drag dan Acceleration , dan mereka juga dapat bergerak saat orang tua mereka bergerak ketika mereka LockedToPart atau memiliki properti nol VelocityInheritance.

Untuk mempelajari lebih lanjut tentang pembuatan dan kustomisasi emitor partikel, lihat Pemancar Partikel.

Contoh Kode

This rather lengthy code sample shows how every property of a ParticleEmitter can be set, including NumberRange, NumberSequence and ColorSequence properties. Below is how the ParticleEmitter should look after every property is set. Try playing around with the different properties to customize how the effect looks!

Creating a Particle Emitter from Scratch

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

Metode

  • Clear():()

    Menghapus semua partikel yang telah dikeluarkan.

  • Emit(particleCount : number):()

    Memancarkan jumlah partikel tertentu.

Properti

Acceleration

Baca Paralel

Properti Akselerasi menentukan bagaimana Speed partikel berubah selama masa hidup mereka.Ini didefinisikan menggunakan Vector3 untuk menentukan akselerasi pada sumbu global X / Y / Z dan diukur dalam stud per detik persegi.Saat diubah, properti ini mempengaruhi semua partikel yang dipancarkan oleh pemancar, baik saat ini maupun masa depan.

Akselerasi akan memperlambat partikel jika titik vektor di berlawanan EmissionDirection di mana mereka dipancarkan. Jika tidak, itu akan mempercepat mereka.

Brightness

Baca Paralel

Skala cahaya yang dipancarkan dari emitor saat ParticleEmitter.LightInfluence adalah 0.

Baca Paralel

Properti Warna menentukan warna semua partikel aktif selama masa hidup masing-masing.Warna berlaku untuk Texture saat menyajikan dan menggunakan tekstur alfa bersama dengan emitor Transparency .Jika pemancar memiliki nilai LightEmission yang lebih besar dari 0, warna gelap membuat partikel tampak lebih transparan.

Mengubah properti ini memengaruhi semua partikel yang dipancarkan oleh pemancar, baik saat ini maupun masa depan.

Ketika properti ini menggunakan gradien ColorSequence, warna hadir partikel ditentukan dengan interpolasi linier pada urutan menggunakan usia partikel dan total masa hidupnya.Sebagai contoh, jika partikel muncul 2 detik yang lalu dan memiliki masa hidup 4 detik, warnanya akan menjadi apa pun yang 50% dari jalan melalui ColorSequence.

Drag

Baca Paralel

Properti Seret menentukan tingkat dalam detik di mana partikel individ akan kehilangan setengah kecepatannya melalui penurunan eksponensial.Seret diterapkan dengan memperbesar kecepatan yang diharapkan dari Speed dan kecepatan yang diwarisi dari orang tua dari VelocityInheritance .Mengatur properti ini ke nilai negatif akan menyebabkan kecepatan partikel tumbuh secara eksponensial.

EmissionDirection

Baca Paralel

Properti Arah Emisi menentukan wajah ( Enum.NormalId ) dari objek orang tua yang partikel dikeluarkan.Negatif Speed berarti partikel dipancarkan ke arah yang berlawanan.SpreadAngle lebih lanjut bervariasi arah emisi.

Jika Anda menambahkan ParticleEmitter ke Attachment yang memiliki arah, Anda dapat memutar lampiran itu sendiri ( Attachment.Orientation ) alih-alih menggunakan properti ini.

Enabled

Baca Paralel

Properti Diaktifkan menentukan apakah partikel dipancarkan dari emitor.Mengatur ini ke false menghentikan partikel lain dari muncul, tetapi partikel yang ada tetap aktif sampai mereka kedaluwarsa.Properti ini berguna ketika Anda memiliki efek partikel pra-dibuat yang ingin tetap dinonaktifkan sampai Anda membutuhkannya untuk mengeluarkan partikel.

Jika Anda ingin menghapus semua partikel dari emitor yang dinonaktifkan, hubungi Clear() .Kemudian, jika diinginkan, panggil Emit() pada pemancar untuk mengeluarkan dan menampilkan partikel.

FlipbookFramerate

Baca Paralel

Properti FlipbookFramerate menentukan seberapa cepat teksur animasi buku terbalik di frame per detik.Seperti Lifetime , Anda dapat menetapkan rentang minimum dan maksimum untuk merandomkan kecepatan bingkai buku liput, dengan maksimal 30 frame per detik.

FlipbookIncompatible

Baca Paralel

Pesan kesalahan untuk ditampilkan jika Texture tidak kompatibel untuk buku liput.Tekstur buku lipat harus memiliki dimensi piksel 8×8, 16×16, 32×32, 64×64, 128×128, 256×256, 512×512, atau 1024×1024.

Baca Paralel

Properti FlipbookLayout menentukan layout tekstur. Ini bisa menjadi nilai apa pun dari enum Enum.ParticleFlipbookLayout

  • Tidak ada – Nonaktifkan fitur buku liput dan gunakan tekstur sebagai tekstur statis tunggal selama masa 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.
Baca Paralel

Properti FlipbookMode menentukan jenis animasi flipbook. Ini bisa menjadi nilai apa pun dari enum Enum.ParticleFlipbookMode:

  • Lingkaran – Terus bermain melalui semua frame, mulai kembali pada frame pertama setelah bermain terakhir.
  • OneShot – Mainkan melalui animasi hanya sekali selama masa hidup partikel.Dengan pengaturan ini, properti FlipbookFramerate tidak berlaku; sebagai gantinya, frekuensi bingkai ditentukan oleh partikel Lifetime dibagi rata oleh jumlah frame dalam animasi. OneShot animasi berguna untuk animasi non-ulang yang jelas, seperti ledakan yang menciptakan puff asap dan kemudian memudar.
  • PingPong – Bermain dari frame pertama ke terakhir, kemudian secara terbalik dari terakhir ke pertama, mengulang di seluruh Lifetime dari partikel.
  • Acak – Mainkan frame dalam urutan acak, bergabung/menyilang dari satu frame ke berikutnya.Ini bisa berguna untuk tekstur partikel organik pada framerate rendah, seperti bintang perlahan berkilau di antara bentuk yang halus berbeda.

FlipbookStartRandom

Baca Paralel

Properti FlipbookStartRandom menentukan apakah setiap partikel dimulai di frame acak animasi alih-alih selalu dimulai di frame pertama.Salah satu kasus penggunaan adalah untuk mengaktifkan properti ini dan juga mengatur FlipbookFramerate menjadi nol, menyebabkan setiap partikel yang dipancarkan menjadi frame statis yang dipilih secara acak dari teks buku liput.

Lifetime

Baca Paralel

Properti Umur Hidup mendefinisikan usia maksimum dan minimum untuk partikel yang baru diterbitkan.Waktu hidup disimpan berdasarkan basis partikel per, jadi jika nilai ini diubah, partikel yang ada akan tetap aktif sampai waktu pilihan acak mereka berakhir.Kehidupan seumur 0 akan mencegah partikel dari memancarkan sama semua.

LightEmission

Baca Paralel

Properti Pemission Cahaya menentukan pencampuran warna Texture dengan warna di belakangnya.Nilai 0 menggunakan mode blending normal sementara nilai 1 menggunakan blending tambahan.Saat diubah, properti ini langsung memengaruhi semua partikel yang dimiliki oleh pemancar, baik saat ini maupun masa depan.

Properti ini tidak boleh dikacaukan dengan LightInfluence yang menentukan bagaimana partikel dipengaruhi oleh cahaya lingkungan.

Properti ini tidak tidak menyebabkan partikel menyalakan lingkungan di sekitar mereka. Untuk mencapai itu, pertimbangkan penggunaan PointLight .

LightInfluence

Baca Paralel

Properti Pengaruh Cahaya menentukan berapa banyak cahaya lingkungan mempengaruhi warna partikel individ saat mereka menyajikan.Harus berada dalam rentang 0–1; perilaku nilai di luar rentang ini tidak didefinisikan.Pada 0, partikel tidak dipengaruhi oleh cahaya sama sekali (mereka mempertahankan kecerahan penuh); pada 1, partikel sepenuhnya dipengaruhi oleh cahaya (dalam kegelapan total, partikel akan menjadi hitam).

Secara default, nilai ini adalah 1 jika dimasukkan dengan alat Studio. Jika dimasukkan menggunakan Instance.new() , itu adalah 0.

LocalTransparencyModifier

Tersembunyi
Tidak Direplikasi
Baca Paralel

LockedToPart

Baca Paralel

Properti LockedToPart menentukan apakah partikel "menempel" ke sumber emisi (yang Attachment atau BasePart ke mana ParticleEmitter diberikan).Jika true , partikel aktif akan bergerak dalam langkah mengunci jika objek orang tua bergerak.

Alternatifnya, pertimbangkan menggunakan properti VelocityInheritance dengan nilai 1 yang mungkin lebih sesuai untuk beberapa efek.

Baca Paralel

Properti Orientasi menentukan mode orientasi mana yang harus digunakan untuk geometri partikel pemancar.


<td>Perilaku Partikel</td>
</tr>
</thead>
<tbody>
<tr>
<td><b>Menghadap Kamera</b></td>
<td>Quad billboard menghadap kamera standar; perilaku default.</td>
</tr>
<tr>
<td><b>Menghadap Kamera Dunia Up</b></td>
<td>Menghadap kamera, tetapi berputar hanya di dunia vertikal ke atas <b>Y</b> sumbu.</td>
</tr>
<tr>
<td><b>VelocityParallel</b></td>
<td>Selaras paralel dengan arah gerakan mereka.</td>
</tr>
<tr>
<td><b>Kecepatan Perpendicular</b></td>
<td>Selaras dengan perpendicular ke gerakan arah mereka.</td>
</tr>
</tbody>
Orientasi

Rate

Baca Paralel

Properti Tingkat menentukan berapa banyak partikel yang dipancarkan per detik saat pemancar adalah Enabled .Ini adalah kebalikan dari frekuensi, artinya tingkat 5 mengirimkan partikel setiap 0,2 detik.Saat diubah, properti ini tidak memiliki pengaruh pada partikel aktif apa pun.

RotSpeed

Baca Paralel

Properti Kecepatan Rotasi menentukan rentang acak kecepatan sudut untuk partikel yang baru dikeluarkan, diukur dalam derajat per detik.Kecepatan sudut acak dipilih saat emisi, jadi mengubah properti ini tidak memengaruhi partikel aktif.Properti ini, bersama dengan Rotation , mempengaruhi sudut gambar partikel yang drender.

Partikel dengan kecepatan sudut sangat tinggi dapat tampak berputar lebih lambat atau sama semuatidak berputar, karena sudut rotasi disinkronkan dengan kecepatan render software.Sebagai contoh, jika partikel berputar persis 360 derajat setiap frame, tidak akan ada perubahan aparen di rotasi.

Rotation

Baca Paralel

Properti Rotasi menentukan rentang rotasi dalam derajat untuk partikel yang baru dikeluarkan, diukur dalam derajat.Nilai positif ada di arah searah jarum jam.Properti ini biasanya ditetapkan ke [0, 360] untuk memberikan rotasi acak sepenuhnya ke partikel baru.RotSpeed juga mempengaruhi rotasi partikel selama masa hidupnya.

Perubahan pada nilai ini hanya memengaruhi partikel baru; partikel yang ada mempertahankan rotasi di mana mereka awalnya dikeluarkan.

Baca Paralel

Properti Bentuk menetapkan bentuk emitor ke kotak, bola, silinder, atau disk.Setelah Anda membuat pilihan, Anda dapat menyesuaikan ShapeStyle , ShapeInOut , dan ShapePartial properti untuk lebih menyesuaikan emisi partikel.Untuk contoh visual, lihat di sini .

Baca Paralel

Mengatur apakah partikel dikeluarkan hanya ke luar, hanya ke dalam, atau di kedua arah. Untuk contoh visual, lihat di sini .

ShapePartial

Baca Paralel

Tergantung pada nilai Shape, properti ini melakukan actionyang berbeda:

  • Untuk silinder, ia menentukan proporsi radius teratas.Nilai 0 berarti bagian atas silinder memiliki radius nol, sehingga menjadikannya sebuah kerucut.Nilai 1 berarti silinder tidak memiliki deformasi.

  • Untuk disk, ia menentukan proporsi radius internal.Nilai 0 berarti disk ditutup sepenuhnya (lingkaran/ellipsa), sementara nilai 1 berarti emisi hanya terjadi di rim terluar dari disk.Nilai antara 0 dan 1 dipancarkan dari annulus dengan ketebalan tertentu.

  • Untuk bola, ia menentukan sudut hemisfer di mana partikel dipancarkan.Nilai 1 berarti partikel dikeluarkan dari seluruh bidang; nilai 0,5 berarti partikel dikeluarkan dari setengah kubah; nilai 0 berarti partikel hanya dikeluarkan dari satu titik di kutub utara.

Untuk contoh visual, lihat di sini.

Baca Paralel

Atur emisi partikel ke emisi volumetrik atau hanya permukaan. Untuk contoh visual, lihat di sini.

Baca Paralel

Properti Ukuran menentukan ukuran dunia semua partikel aktif selama masa hidup individu mereka.Properti ini mewakili dimensi kotak Texture untuk setiap partikel.Ini adalah NumberSequence yang berfungsi serupa dengan Transparency .

Ukuran hadir sebuah partikel ditentukan dengan interpolasi linier pada urutan ini menggunakan usia partikel dan total masa hidupnya.Sebagai contoh, jika partikel muncul 2 detik yang lalu dan memiliki masa hidup 4 detik, ukurannya akan menjadi apa pun yang 50% dari jalan melalui NumberSequence.Untuk setiap NumberSequenceKeypoint dengan nilai amplop non-nol, nilai acak dalam rentang amplop dipilih untuk setiap titik kunci untuk setiap partikel saat dikeluarkan.

Baca Paralel

Properti Kecepatan menentukan rentang kecepatan acak (minimal ke maksimal) di mana partikel baru akan dipancarkan, diukur dalam stud per detik.Kecepatan setiap partikel dipilih saat emisi dan berlaku di EmissionDirection .Nilai negatif menyebabkan partikel melakukan perjalanan kebalik.

Perhatikan bahwa mengubah Speed tidak memengaruhi partikel aktif dan mereka mempertahankan kecepatan apa pun yang sudah mereka miliki.Namun, Acceleration , Drag , dan VelocityInheritance dapat digunakan untuk mempengaruhi kecepatan partikel aktif selama masa hidup mereka.

SpreadAngle

Baca Paralel

Properti Sebaran Sudut menentukan sudut acak di mana partikel dapat dipancarkan.Sebagai contoh, jika EmissionDirection adalah Atas (+ Y ), ini Vector2 menggambarkan ukuran sudut acak yang tersebar di X / Z sumbu, dalam derajat.

Mengatur satu sumbu ke 360 akan menyebabkan partikel dipancarkan ke semua arah dalam lingkaran .Mengatur keduanya menjadi 360 akan menyebabkan partikel dipancarkan ke semua arah di sebuah bola .

Baca Paralel

Memungkinkan skala non-uniform untuk partikel, dikendalikan kurva selama masa hidupnya.Nilai lebih besar dari 0 menyebabkan partikel menyusut secara horizontal dan tumbuh secara vertikal, sementara nilai kurang dari 0 menyebabkan partikel tumbuh secara horizontal dan menyusut secara vertikal.

Texture

ContentId
Baca Paralel

Properti Tekstur menentukan gambar yang ditampilkan pada partikel.Gambar ini dipengaruhi oleh Color , Transparency , LightInfluence , dan LightEmission .Tekstur dengan latar belakang transparan bekerja paling baik untuk partikel.

TimeScale

Baca Paralel

Nilai antara 0 dan 1 yang mengontrol kecepatan efek partikel.Pada 1, berjalan dengan kecepatan normal; pada 0.5 berjalan setengah kecepatan; pada 0 membeku dalam waktu.

Transparency

Baca Paralel

Properti Transparansi menentukan transparansi semua partikel aktif selama masa hidup individu mereka.Ini berfungsi serupa dengan Size dalam cara mempengaruhi partikel seiring waktu.Dalam hal rendering, nilai 0 sepenuhnya terlihat (tidak transparan) dan nilai 1 sepenuhnya tidak terlihat (tidak disajikan sama sekali).

Transparansi hadir sebuah partikel ditentukan dengan interpolasi linier pada urutan ini menggunakan usia partikel dan total masa hidupnya.Sebagai contoh, jika partikel muncul 2 detik yang lalu dan memiliki masa hidup 4 detik, transparansi akan menjadi apa pun yang 50% dari jalan melalui NumberSequence.Untuk setiap NumberSequenceKeypoint dengan nilai amplop non-nol, nilai acak dalam rentang amplop dipilih untuk setiap titik kunci untuk setiap partikel saat dikeluarkan.

VelocityInheritance

Baca Paralel

Properti Pengwarisan Kecepatan menentukan berapa banyak bagian orang tua Velocity diwarisi oleh partikel saat mereka dipancarkan.Nilai 0 berarti tidak ada kecepatan yang diwarisi, sementara nilai 1 berarti partikel akan memiliki kecepatan yang sama persis dengan orangtua BasePart .

Saat digunakan bersama dengan Drag, pemancar partikel dapat tampak "menumpahkan" partikel dari bagian bergerak.

WindAffectsDrag

Baca Paralel

Jika benar, partikel yang dipancarkan mengikuti vektor Workspace.GlobalWind. Hanya berlaku jika properti Drag lebih besar dari 0.

ZOffset

Baca Paralel

Properti ZOffset menentukan posisi render ke depan-ke belakang partikel, dalam stud, tanpa mengubah ukuran mereka di layar.Saat diubah, properti ini mempengaruhi partikel saat ini dan masa depan.Perhatikan bahwa properti ini menerima nilai fraksional; tidak seperti GuiObject.ZIndex (integer).

Nilai positif memindahkan partikel lebih dekat ke kamera dan nilai negatif memindahkan partikel jauh.Nilai negatif yang cukup dapat menyebabkan partikel untuk ditampilkan di dalam atau di belakang bagian orang tua.

Metode

Clear

()

Metode Bersihkan langsung membersihkan semua partikel yang ada yang telah dikeluarkan oleh melalui emisi alami (tidak nol pada pemancar) atau melalui .


Memberikan nilai

()

Contoh Kode

This code sample causes a ParticleEmitter to ParticleEmitter:Emit() particles in bursts of 10 every 2 seconds. It ParticleEmitter:Clear()s any existing particles before doing so.

ParticleEmitter Burst

local emitter = script.Parent
while true do
emitter:Clear()
emitter:Emit(10)
task.wait(2)
end

Emit

()

Metode Kirim akan menyebabkan ParticleEmitter langsung mengeluarkan jumlah partikel yang diberikan.

Parameter

particleCount: number

Jumlah partikel untuk dikeluarkan.

Nilai Default: 16

Memberikan nilai

()

Contoh Kode

This code sample causes a parent ParticleEmitter to ParticleEmitter:Emit() particles based on how far the parent BasePart moves.

Emit Particles Over Distance

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

This code sample causes a ParticleEmitter to ParticleEmitter:Emit() particles in bursts of 10 every 2 seconds. It ParticleEmitter:Clear()s any existing particles before doing so.

ParticleEmitter Burst

local emitter = script.Parent
while true do
emitter:Clear()
emitter:Emit(10)
task.wait(2)
end

Acara