Cosmic Strike
 
Cargando...
Buscando...
Nada coincide
DamageOnCollision.cs
Ir a la documentación de este archivo.
1
10
11using UnityEngine;
12
18public class DamageOnCollision : MonoBehaviour
19{
20 // ========== CONFIGURACIÓN DE DAÑO ==========
21
25 [Header("Daños al Contacto")]
26 [Tooltip("Daño que inflige este objeto al jugador (tag = Player)")]
27 public int damageToPlayer = 0;
28
32 [Tooltip("Daño que inflige este objeto al enemigo (tag = Enemy)")]
33 public int damageToEnemy = 0;
34
38 [Tooltip("¿Destruir este objeto tras impactar y aplicar daño?")]
39 public bool destroySelf = true;
40
41 // ========== DETECCIÓN DE COLISIÓN ==========
42
48 void OnTriggerEnter2D(Collider2D other)
49 {
50 string myTag = gameObject.tag;
51 string otherTag = other.tag;
52
53 // ----- 1) Colisión bala jugador ↔ bala enemigo -----
54 if ((myTag == "PlayerBullet" && otherTag == "EnemyBullet") ||
55 (myTag == "EnemyBullet" && otherTag == "PlayerBullet"))
56 {
57 // Destruye ambas balas y suma puntos si se usan (ScoreManager opcional)
58 Debug.Log("¡Balas cruzadas! Destruyo ambas.");
60 Destroy(other.gameObject);
61 if (destroySelf)
62 Destroy(gameObject);
63 return;
64 }
65
66 // ----- 2) Bala o enemigo golpea al jugador -----
67 if (otherTag == "Player" && damageToPlayer > 0)
68 {
69 var playerHealth = other.GetComponent<Health>();
70 if (playerHealth != null)
71 playerHealth.TakeDamage(damageToPlayer);
72
73 // Si este objeto es un enemigo, puede recibir daño recíproco
74 if (myTag == "Enemy" && damageToEnemy > 0)
75 {
76 var myHealth = GetComponent<Health>();
77 if (myHealth != null)
78 myHealth.TakeDamage(damageToEnemy);
79 }
80
81 if (destroySelf)
82 Destroy(gameObject);
83
84 return;
85 }
86
87 // ----- 3) Bala o jugador golpea a un enemigo -----
88 if (otherTag == "Enemy" && damageToEnemy > 0)
89 {
90 var enemyHealth = other.GetComponent<Health>();
91 if (enemyHealth != null)
92 enemyHealth.TakeDamage(damageToEnemy);
93
94 if (destroySelf)
95 Destroy(gameObject);
96
97 return;
98 }
99 }
100}
Componente que aplica daño al colisionar con otros objetos, según su etiqueta. Soporta colisiones jug...
int damageToPlayer
Daño que este objeto inflige al jugador (objetos con tag "Player").
void OnTriggerEnter2D(Collider2D other)
Método de Unity que se ejecuta cuando otro Collider2D entra en contacto con este objeto (Trigger)....
bool destroySelf
Determina si este objeto debe autodestruirse tras colisionar y aplicar daño.
int damageToEnemy
Daño que este objeto inflige a enemigos (objetos con tag "Enemy").
Componente que gestiona la salud de un objeto. Permite recibir daño y ser destruido al llegar a cero....
Definition Health.cs:17
void TakeDamage(int amount)
Inflige daño al objeto. Si la salud llega a cero o menos, se destruye.
Definition Health.cs:53
Sistema de puntuación centralizado que gestiona puntos obtenidos por el jugador. Permite asignar punt...
void AddBulletScore()
Suma los puntos correspondientes por destruir una bala enemiga.
static ScoreManager Instance
Instancia global del ScoreManager accesible desde cualquier parte del código.