Berbagi teknologi

[Unity2D 2022: Sistem Partikel] Tambahkan efek khusus partikel hit

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

1. Buat objek permainan efek khusus partikel

2. Memodifikasi properti sistem partikel

1. Atribut dasar

(1) Ubah durasi partikel yang dipancarkan (Durasi) menjadi 1 detik

(2) Hapus centang Perulangan

(3) Ubah waktu keberadaan partikel (Mulai Seumur Hidup) ke nilai acak antara 0,1 dan 0,2

(4) Ubah kecepatan awal partikel (Start Speed) menjadi 0

(5) Ubah ukuran awal partikel (Ukuran Awal) menjadi nilai acak antara 0,7 dan 1

(6) Ubah sudut rotasi awal partikel (Mulai Rotasi) ke nilai acak antara 0 dan 360

2. Emisi

(1) Atur kecepatan pancaran partikel (Laju Seiring Waktu) ke 0 (yaitu tidak memancarkan partikel)

(2) Tambahkan Burst, Waktu adalah 0, Hitungan adalah 5

3. Bentuk Emitor (Bentuk)

(1) Atur Bentuk menjadi Lingkaran

(2) Atur sudut putaran (Rotation) menjadi 900 searah sumbu x

(3) Atur radius ke (Radius) 0,12

(4) Atur mode (Mode) ke Burst Spread (penyebaran ledakan)

4. Warna partikel (Warna Sepanjang Seumur Hidup)

(1) Atur transparansi ke 255-0 (yaitu semakin transparan)

5. Ukuran partikel (Ukuran sepanjang Seumur Hidup)

(1) Atur ukuran partikel menjadi 0,6-1

6. Animasi Tekstur Partikel (Animasi Lembar Tekstur)

(1) Tambahkan gambar sprite partikel

3. Buat cetakan efek khusus yang terkenal

4. Efek khusus dimainkan ketika peluru mengenai musuh.

1. Edit skrip poin:

(1) Buat cetakan efek khusus hit

  1. public class Bullet : MonoBehaviour
  2. {
  3. // 创建命中特效预制体
  4. public GameObject hitEffectParticlePrefab;
  5. }

(2) Tulis ulang antarmuka iterator dan hapus efek partikel hit setelah penundaan 1 detik.

  1. public class Bullet : MonoBehaviour
  2. {
  3. // 创建命中特效预制体
  4. public GameObject hitEffectParticlePrefab;
  5. // 在1s后删除粒子特效
  6. private async Task deleteEffectParticle(GameObject EffectParticle, float delay)
  7. {
  8. // 等待1s
  9. await Task.Delay(1000);
  10. // 删除粒子特效
  11. Destroy(EffectParticle);
  12. }
  13. }

(3) Saat mengenai musuh, buat efek khusus partikel pukulan pada posisi peluru dan hapus setelah 1 detik.

  1. public class Bullet : MonoBehaviour
  2. {
  3. // 创建命中特效预制体
  4. public GameObject hitEffectParticlePrefab;
  5. // 击中敌人
  6. private void OnCollisionEnter2D(Collision2D collision)
  7. {
  8. Enemy enemy = collision.gameObject.GetComponent<Enemy>();
  9. if(enemy != null) {
  10. enemy.changeHealthPoint(-25);
  11. GameObject hitEffectParticle = Instantiate(hitEffectParticlePrefab, transform.position, Quaternion.identity);
  12. deleteHitEffectParticle(hitEffectParticle, 1);
  13. }
  14. Destroy(gameObject);
  15. }
  16. // 在1s后删除粒子特效
  17. public static async Task deleteEffectParticle(GameObject EffectParticle, float delay)
  18. {
  19. // 等待1s
  20. await Task.Delay(1000);
  21. // 删除粒子特效
  22. Destroy(EffectParticle);
  23. }
  24. }

2. Tambahkan efek khusus partikel hit ke cetakan peluru

3. Efek akhirnya adalah seperti gambar di bawah ini:

Akhir bab ini. Terima kasih sudah membaca!