Collision modul
Sub modul Emitters

Triggers modul

Modul Pemicu Sistem Partikel Built-in memungkinkan Anda untuk mengakses dan memodifikasi partikel berdasarkan interaksi mereka dengan satu atau lebih CollidersBentuk tak terlihat yang digunakan untuk menangani tabrakan fisik untuk objek. Seorang sari tidak perlu menjadi bentuk yang sama dengan jala objek - perkiraan kasar sering lebih efisien dan tidak dapat dibedakan dalam gameplay. More info
Lihat di Glossary
di SceneAdegan berisi lingkungan dan menu permainan Anda. Pikirkan setiap file Adegan unik sebagai tingkat yang unik. Di setiap Adegan, Anda menempatkan lingkungan, hambatan, dan dekorasi, pada dasarnya merancang dan membangun permainan Anda dalam potongan-potongan. More info
Lihat di Glossary
. Ketika Anda mengaktifkan modul ini, Sistem Partikel memanggil callback OnParticleTrigger() pada terpasang scriptsSepotong kode yang memungkinkan Anda untuk membuat Komponen Anda sendiri, memicu peristiwa permainan, memodifikasi sifat komponen dari waktu ke waktu dan menanggapi input pengguna dengan cara apa pun yang Anda sukai. More info
Lihat di Glossary
, yang dapat Anda gunakan untuk mengakses daftar partikel tergantung di mana mereka sehubungan dengan Collider di Adegan.

Particle Systems Triggers module
Modul Pemicu Sistem Partikel

Menggunakan modul Pemicu

Modul ini adalah bagian dari komponen Sistem partikelKomponen yang mensimulasikan entitas fluida seperti cairan, awan dan nyala dengan menghasilkan dan memikat sejumlah besar gambar 2D kecil di tempat kejadian. More info
Lihat di Glossary
. Ketika Anda membuat Sistem Partikel baru GameObjectObjek mendasar dalam adegan Unity, yang dapat mewakili karakter, props, pemandangan, kamera, waypoints, dan banyak lagi. Fungsi GameObject didefinisikan oleh Komponen yang melekat padanya. More info
Lihat di Glossary
, atau tambahkan komponen Sistem Partikel ke GameObject yang keluar, Unity menambahkan modul Pemicu ke Sistem Partikel. Secara default, Unity menonaktifkan modul ini. Untuk membuat Sistem Partikel baru dan mengaktifkan modul ini:

  1. GameObject > Effects > Particle System.
  2. Pada InspectorJendela Unity yang menampilkan informasi tentang Pengaturan GameObject yang dipilih saat ini, aset atau proyek, memungkinkan Anda untuk memeriksa dan mengedit nilai. More info
    Lihat di Glossary
    , temukan komponen Sistem Partikel.
  3. Dalam komponen Sistem Partikel, temukan lipatan modul Pemicu.
  4. Di sebelah kiri header lipat, aktifkan kotak centang.

Untuk memulai, tentukan bahwa Collider di Adegan partikel dapat berinteraksi dengan. Untuk melakukan ini, menetapkan satu atau lebih Collider ke properti daftar Colliders. Untuk meningkatkan jumlah Collider dalam daftar, klik tombol Add (+) di bawah daftar Collider. Untuk menghapus Collider dari daftar, pilih Collider dan klik tombol Hapus (-). Jika Anda belum ditugaskan Collider ke indeks daftar, Anda dapat menggunakan tombol Add (+) yang lebih kecil, ke kanan entri kosong, untuk membuat dan menetapkan Collider baru. Ini menciptakan GameObject baru sebagai anak Sistem Partikel dan melampirkan Sphere ColliderKomponen collider berbentuk sphere yang menangani tabrakan untuk GameObjects seperti bola atau hal-hal lain yang dapat kira-kira perkiraan sebagai bidang untuk tujuan fisika. More info
Lihat di Glossary
untuk itu, kemudian menetapkan Collider ke entri kosong.

Setelah Anda menambahkan Collider, Anda kemudian dapat menentukan partikel apa yang dilakukan ketika memenuhi kriteria untuk melewati jenis acara pemicu tertentu. Ada empat jenis acara yang menjelaskan bagaimana partikel dapat berinteraksi dengan Collider. Mereka adalah:

  • Inside: Partikel di dalam batas Collider.
  • Outside: Partikel di luar batas Collider.
  • Enter: Partikel memasuki batas Collider.
  • Exit: Sebuah partikel keluar dari batas Collider.

Dalam Inspektur, ada drop-down untuk masing-masing jenis acara ini yang memungkinkan Anda memilih apa yang harus terjadi pada partikel jika melewati kondisi acara pemicu. Pilihannya adalah:

  • Callback: Memungkinkan Anda untuk mengakses partikel dalam fungsi callback OnParticleTrigger().
  • Kill: Menghapus partikel. Anda tidak dapat mengakses partikel dalam fungsi callback OnParticleTrigger().
  • Ignore: Mengabaikan partikel. Anda tidak dapat mengakses partikel dalam fungsi callback OnParticleTrigger().

API

Karena modul ini adalah bagian dari komponen Sistem Partikel, Anda mengaksesnya melalui kelas ParticleSystem. Untuk informasi tentang cara mengaksesnya dan mengubah nilai pada runtime, lihat Pemicu modul API dokumentasi.

Mengakses partikel dalam OnParticleTrigger()

Jika Anda memilih Callback sebagai reaksi ke salah satu peristiwa pemicu, Anda dapat mengakses partikel yang memenuhi kondisi acara dari script yang terpasang. Untuk melakukan ini, Anda harus menambahkan fungsi OnParticleTrigger() ke script yang terpasang. Dalam fungsi ini, sebut fungsi PartikelPhysicsExtensions.GetTriggerParticles() untuk mendapatkan daftar partikel yang memenuhi kriteria peristiwa pemicu. Fungsi ini mengambil ParticleSystemTriggerEventType, yang menentukan peristiwa pemicu yang ingin Anda dapatkan partikel untuk (Inside, Outside, atau Enter), dan daftar Exit yang berfungsi diisi dengan hasilnya. Dari daftar, Anda dapat mengakses, memodifikasi, atau menghancurkan partikel. Fungsi juga dapat mengambil parameter opsional yang menghasilkan informasi ParticlesGambar kecil atau mesh sederhana yang dipancarkan oleh sistem partikel. Sistem partikel dapat menampilkan dan memindahkan partikel dalam jumlah besar untuk mewakili entitas fluida atau amorf. Efek semua partikel bersama menciptakan kesan entitas lengkap, seperti asap. More info
Lihat di Glossary
, seperti yang Collider setiap partikel yang dipicu. Properti collisiontabrakan terjadi ketika mesin fisika mendeteksi bahwa tabrakan dari dua GameObjects membuat kontak atau tumpang tindih, ketika setidaknya satu memiliki komponen kaku dan bergerak. More info
Lihat di Glossary
mengontrol informasi apa yang tersedia melalui parameter ini.Collider Query Mode property controls what information is available through this parameter.

Untuk informasi lebih lanjut tentang API dan cara menggunakannya, lihat below example.

Properties

Untuk beberapa properti di bagian ini, Anda dapat menggunakan mode yang berbeda untuk mengatur nilai mereka. Untuk informasi pada mode yang dapat Anda gunakan, lihat Memanfaatkan sifat seiring waktu.

Property Description
Inside Tentukan aksi Sistem Partikel diperlukan partikel setiap bingkai yang berada di dalam Collider. Pilihannya adalah:
Callback: Tambahkan partikel ke daftar yang dapat Anda ambil di callback OnParticleTrigger() •
: Menghapus partikel. Kill
: Mengabaikan partikel.Ignore: Ignores the particle.
Outside Tentukan aksi Sistem Partikel diperlukan partikel setiap bingkai yang berada di luar Collider. Pilihannya adalah:
Callback: Tambahkan partikel ke daftar yang dapat Anda ambil di callback OnParticleTrigger() •
: Menghapus partikel. Kill
: Mengabaikan partikel.Ignore: Ignores the particle.
Enter Tentukan tindakan Sistem Partikel diperlukan untuk partikel dalam bingkai yang mereka masukkan Collider. Pilihannya adalah:
Callback: Tambahkan partikel ke daftar yang dapat Anda ambil di callback OnParticleTrigger() •
: Menghapus partikel. Kill
: Mengabaikan partikel.Ignore: Ignores the particle.
Exit Menentukan tindakan Sistem Partikel diperlukan untuk partikel dalam bingkai mereka keluar Collider. Pilihannya adalah:
Callback: Tambahkan partikel ke daftar yang dapat Anda ambil di callback OnParticleTrigger() •
: Menghapus partikel. Kill
: Mengabaikan partikel.Ignore: Ignores the particle.
Collider Query Mode Tentukan metode Sistem Partikel ini menggunakan untuk mendapatkan informasi tentang Collider yang partikel berinteraksi dengan. Ini meningkatkan intensitas sumber daya pemrosesan modul Pemicu sehingga, jika Anda tidak perlu informasi tabrakan tambahan, atur properti ini ke Disabled. Pilihannya adalah:
Disabled: Tidak mendapatkan informasi apa pun tentang yang Collider setiap partikel berinteraksi dengan.
One: Dapatkan informasi tentang Collider pertama setiap partikel berinteraksi. Jika partikel berinteraksi dengan beberapa Collider dalam bingkai, ini mengembalikan Collider pertama dalam daftar Collider partikel berinteraksi dengan.
All: Dapatkan informasi tentang setiap Collider setiap partikel berinteraksi dengan.
Radius Scale Collider partikel terikat. Ini memungkinkan Anda untuk mencocokkan kolider partikel yang terikat pada penampilan visual partikel lebih erat. Ini berguna jika partikel melingkar dengan fade dalam teksturnya karena partikel default Collider akan berada di dalam pemicu sebelum partikel terlihat secara visual. Perhatikan bahwa pengaturan ini tidak berubah ketika peristiwa itu benar-benar memicu, tetapi dapat menunda atau memajukan efek visual pemicu.

• Masukkan 1 untuk menjaga partikel Colliders ukuran yang sama dan untuk acara muncul terjadi sebagai partikel menyentuh Collider. Login Masukkan nilai kurang dari
untuk membuat partikel Collider lebih kecil dan untuk pemicu muncul untuk terjadi setelah partikel menembus Collider 1• Masukkan nilai lebih besar dari
untuk membuat partikel Colliders lebih besar dan untuk pemicu muncul untuk terjadi sebelum partikel menembus Collider1 to make the particle Colliders larger and for the trigger to appear to happen before a particle penetrates the Collider
Visualize Bounds Menunjukkan apakah untuk menampilkan batas Collider setiap partikel dalam Scene viewTampilan interaktif ke dunia yang Anda buat. Anda menggunakan Adegan Lihat untuk memilih dan posisi pemandangan, karakter, kamera, lampu, dan semua jenis lain dari Game Object. More info
Lihat di Glossary
. Aktifkan properti ini untuk menampilkan batas Collider dan menonaktifkannya untuk menyembunyikan batas Collider.

Examples

Interaksi dengan sari

Contoh di bawah ini menyebabkan partikel untuk mengubah merah karena mereka memasuki batas Collider, kemudian mengubah hijau saat mereka meninggalkan batas Collider.

using UnityEngine;
using System.Collections;
using System.Collections.Generic;

[ExecuteInEditMode]
public class TriggerScript : MonoBehaviour
{
    ParticleSystem ps;

    // these lists are used to contain the particles which match
    // the trigger conditions each frame.
    List<ParticleSystem.Particle> enter = new List<ParticleSystem.Particle>();
    List<ParticleSystem.Particle> exit = new List<ParticleSystem.Particle>();

    void OnEnable()
    {
        ps = GetComponent<ParticleSystem>();
    }

    void OnParticleTrigger()
    {
        // get the particles which matched the trigger conditions this frame
        int numEnter = ps.GetTriggerParticles(ParticleSystemTriggerEventType.Enter, enter);
        int numExit = ps.GetTriggerParticles(ParticleSystemTriggerEventType.Exit, exit);

        // iterate through the particles which entered the trigger and make them red
        for (int i = 0; i < numEnter; i++)
        {
            ParticleSystem.Particle p = enter[i];
            p.startColor = new Color32(255, 0, 0, 255);
            enter[i] = p;
        }

        // iterate through the particles which exited the trigger and make them green
        for (int i = 0; i < numExit; i++)
        {
            ParticleSystem.Particle p = exit[i];
            p.startColor = new Color32(0, 255, 0, 255);
            exit[i] = p;
        }

        // re-assign the modified particles back into the particle system
        ps.SetTriggerParticles(ParticleSystemTriggerEventType.Enter, enter);
        ps.SetTriggerParticles(ParticleSystemTriggerEventType.Exit, exit);
    }
}

Lihat gambar di bawah ini untuk hasil dari contoh ini:

Editor view
Editor view
Game view
Tampilan permainan

Interaksi dengan beberapa sari

Contoh berikut mengambil keuntungan dari data tabrakan tambahan yang dapat Anda ekstrak dari fungsi GetTriggerParticles(). Ini menyebabkan partikel di dalam batas Collider pertama untuk mengubah warna merah, di dalam batas Collider kedua untuk mengubah biru, atau di dalam Collider untuk mengubah hijau. Ini juga mengubah partikel putih jika tidak ada di dalam Collider. Untuk contoh ini, Collider Query Mode diatur ke All.

using UnityEngine;
using System.Collections;
using System.Collections.Generic;

[ExecuteInEditMode]
public class TriggerScript : MonoBehaviour
{
    void OnParticleTrigger()
    {
        ParticleSystem ps = GetComponent();
 
        // particles
        List inside = new List();
        List exit = new List();
 
        // get
        int numInside = ps.GetTriggerParticles(ParticleSystemTriggerEventType.Inside, inside, out var insideData);
        int numExit = ps.GetTriggerParticles(ParticleSystemTriggerEventType.Exit, exit);
 
        // iterate
        for (int i = 0; i < numInside; i++)
        {
            ParticleSystem.Particle p = inside[i];
            if (insideData.GetColliderCount(i) == 1)
            {
                if (insideData.GetCollider(i, 0) == ps.trigger.GetCollider(0))
                    p.startColor = new Color32(255, 0, 0, 255);
                else
                    p.startColor = new Color32(0, 0, 255, 255);
            }
            else if (insideData.GetColliderCount(i) == 2)
            {
                p.startColor = new Color32(0, 255, 0, 255);
            }
            inside[i] = p;
        }
        for (int i = 0; i < numExit; i++)
        {
            ParticleSystem.Particle p = exit[i];
            p.startColor = new Color32(1, 1, 1, 255);
            exit[i] = p;
        }
 
        // set
        ps.SetTriggerParticles(ParticleSystemTriggerEventType.Inside, inside);
        ps.SetTriggerParticles(ParticleSystemTriggerEventType.Exit, exit);
    }
}

Lihat gambar berikut untuk hasil contoh ini:

Game view
Tampilan permainan
Collision modul
Sub modul Emitters