Compartilhamento de tecnologia

[Unity2D 2022: Particle System] Adicionar efeitos especiais de partículas atingidas

2024-07-12

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

1. Crie objetos de jogo de efeitos especiais de partículas

2. Modifique as propriedades do sistema de partículas

1. Atributos básicos

(1) Modifique a duração das partículas emitidas (Duração) para 1s

(2) Desmarque Loop

(3) Modifique o tempo de existência da partícula (Start Lifetime) para um valor aleatório entre 0,1 e 0,2

(4) Modifique a velocidade inicial da partícula (Velocidade Inicial) para 0

(5) Modifique o tamanho inicial da partícula (Tamanho inicial) para um valor aleatório entre 0,7 e 1

(6) Modifique o ângulo de rotação inicial da partícula (Rotação Inicial) para um valor aleatório entre 0 e 360

2. Emissão

(1) Defina a velocidade da partícula emitida (Taxa ao longo do tempo) como 0 (ou seja, não emita partículas)

(2) Adicionar burst (Burst), o tempo é 0, a contagem é 5

3. Forma do Emissor (Forma)

(1) Definir forma como círculo

(2) Defina o ângulo de rotação (Rotação) para 900 na direção do eixo x

(3) Defina o raio para (Raio) 0,12

(4) Defina o modo (Mode) para Burst Spread (explosão espalhada)

4. Cor das partículas (cor ao longo da vida)

(1) Defina a transparência para 255-0 (ou seja, cada vez mais transparente)

5. Tamanho das partículas (tamanho ao longo da vida)

(1) Defina o tamanho da partícula para 0,6-1

6. Animação de textura de partículas (animação de folha de textura)

(1) Adicionar imagens de sprites de partículas

3. Crie pré-fabricados de efeitos especiais de sucesso

4. Os efeitos especiais são reproduzidos quando a bala atinge o inimigo.

1. Edite o script com marcadores:

(1) Criar pré-fabricados de efeitos especiais de sucesso

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

(2) Reescreva a interface do iterador e exclua os efeitos das partículas atingidas após um atraso de 1s.

  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) Ao atingir um inimigo, crie um efeito especial de partícula atingida na posição da bala, que será deletado após 1s.

  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. Adicione efeitos especiais de partículas atingidas à pré-fabricada de bala

3. O efeito final é mostrado abaixo:

Fim deste capítulo. Obrigado por ler!