Cosmic Strike
 
Cargando...
Buscando...
Nada coincide
ScreenClearAbility.cs
Ir a la documentación de este archivo.
1
10
11using UnityEngine;
12
18public class ScreenClearAbility : MonoBehaviour
19{
20 // ========== CONFIGURACIÓN PÚBLICA ==========
21
25 [Header("Configuración de la habilidad")]
26 [Tooltip("Tecla para activar el borrado de pantalla")]
27 public KeyCode activateKey = KeyCode.Q;
28
32 [Tooltip("Número de usos disponibles (p. ej. recogidos en power-ups)")]
33 public int uses = 1;
34
38 [Tooltip("Duración del temblor de cámara en segundos")]
39 public float shakeDuration = 0.5f;
40
44 [Tooltip("Magnitud del temblor de cámara")]
45 public float shakeMagnitude = 0.3f;
46
47 // ========== VARIABLES INTERNAS ==========
48
53
54 // ========== MÉTODOS UNITY ==========
55
60 void Start()
61 {
62 var cam = Camera.main;
63 if (cam != null)
64 {
65 cameraShake = cam.GetComponent<CameraShake>();
66 if (cameraShake == null)
67 cameraShake = cam.gameObject.AddComponent<CameraShake>();
68 }
69 else
70 {
71 Debug.LogError("ScreenClearAbility: no hay cámara principal (Main Camera) en la escena.");
72 }
73 }
74
79 void Update()
80 {
81 if (uses > 0 && Input.GetKeyDown(activateKey))
82 {
84 }
85 }
86
87 // ========== MÉTODOS PRINCIPALES ==========
88
94 private void ActivateClear()
95 {
96 // 1) Destruir todos los enemigos mediante Health (para que hagan su explosión)
97 foreach (var e in GameObject.FindGameObjectsWithTag("Enemy"))
98 {
99 var h = e.GetComponent<Health>();
100 if (h != null)
101 {
102 // Infligimos daño "infinito" para forzar la muerte y su explosión
103 h.TakeDamage(int.MaxValue);
104 }
105 else
106 {
107 Destroy(e);
108 }
109 }
110
111 // 2) Destruir todas las balas enemigas (normalmente no tienen Health)
112 foreach (var b in GameObject.FindGameObjectsWithTag("EnemyBullet"))
113 {
114 Destroy(b);
115 }
116
117 // 3) Provocar shake en la cámara
118 if (cameraShake != null)
120
121 // 4) Consumir un uso
122 uses--;
123 }
124
129 public void AddUses(int amount = 1)
130 {
131 uses += amount;
132 }
133}
Componente que permite aplicar un efecto de sacudida temporal a la cámara. Ideal para generar feedbac...
Componente que gestiona la salud de un objeto. Permite recibir daño y ser destruido al llegar a cero....
Definition Health.cs:17
Componente que permite al jugador activar una habilidad de limpieza de pantalla (screen wipe),...
KeyCode activateKey
Tecla utilizada para activar la habilidad. Por defecto: Q.
void Start()
Inicializa la referencia al CameraShake en la Main Camera. Si no existe, lo añade automáticamente.
void ActivateClear()
Activa la limpieza de pantalla: destruye todos los enemigos y balas enemigas, provoca un temblor de c...
void AddUses(int amount=1)
Añade una cantidad específica de usos a la habilidad (por ejemplo, al recoger un Power-Up).
float shakeMagnitude
Intensidad del temblor de cámara.
void Update()
Comprueba si se pulsa la tecla de activación y si hay usos disponibles. Si es así,...
int uses
Número de usos disponibles. Puede aumentar mediante power-ups.
CameraShake cameraShake
Referencia al componente encargado de producir el efecto de cámara sacudida.
float shakeDuration
Duración del efecto de temblor de cámara tras activar la habilidad.