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.

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

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():void

    Bersihkan semua partikel yang telah dikeluarkan.

  • Emit(particleCount : number):void

    Mengeluarkan jumlah tertentu dari partikel.

Properti

Acceleration

Baca Paralel

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

Baca Paralel

Skala cahaya yang dipancarkan dari emitter ketika ParticleEmitter.LightInfluence adalah 0.

Baca Paralel

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

Baca Paralel

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

Baca Paralel

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

Baca Paralel

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

Baca Paralel

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

Baca Paralel

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×

Baca Paralel

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.
Baca Paralel

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

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 mengaktifkan properti ini dan juga menetapkan FlipbookFramerate ke nol, menyebabkan setiap partikel yang dikeluarkan menjadi

Lifetime

Baca Paralel

プロ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

Baca Paralel

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

Baca Paralel

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

Tersembunyi
Tidak Direplikasi
Baca Paralel

LockedToPart

Baca Paralel

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.

Baca Paralel

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>
OrientasiPerilaku Partikel

Rate

Baca Paralel

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

Baca Paralel

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

Baca Paralel

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.

Baca Paralel

Properti Bentuk mengatur bentuk emitter ke kotak, bola, silinder, atau disc. Setelah Anda membuat pilihan, Anda dapat menyesuaikan ShapeStyle , ShapeInOut ,

Baca Paralel

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

ShapePartial

Baca Paralel

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.

Baca Paralel

Mengatur emisi partikel menjadi emisi volumen atau hanya emisi permukaan. Untuk contoh visual, lihat di sini.

Baca Paralel

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.

Baca Paralel

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

Baca Paralel

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 .

Baca Paralel

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

ContentId
Baca Paralel

Properti Teksur menentukan gambar yang di render pada partikel. Gambar ini dipengaruhi oleh Color, Transparency, 1> Class.ParticleEmitter.LightInfluence|LightInfluence1>, dan

TimeScale

Baca Paralel

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

Baca Paralel

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

Baca Paralel

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

Baca Paralel

Jika benar, partikel yang dikeluarkan mengikuti vector Workspace.GlobalWind. Hanya berlaku jika propinsi Drag lebih besar dari 0.

ZOffset

Baca Paralel

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

void

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

void

Contoh Kode

ParticleEmitter Burst

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

Emit

void

Metode Emit akan menyebabkan ParticleEmitter untuk segera menghasilkan jumlah partikel yang diberikan.

Parameter

particleCount: number

Jumlah partikel untuk dikeluarkan.

Nilai Default: 16

Memberikan nilai

void

Contoh Kode

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
ParticleEmitter Burst

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

Acara