Hola En este artículo me gustaría compartir cómo realizar la destrucción de enemigos por salto, como en Mario. Todavía estoy estudiando, así que si tengo algún consejo o sugerencia útil, por favor escriba a los comentarios. Bueno, después de numerosas vistas de tutoriales y de leer artículos, solo se encontraron dos interesantes, y probablemente la forma más fácil de implementar las opciones:
- el primero es el contacto de los puntos del colisionador,
- el segundo es el contacto de los colisionadores, cuando dos colisionadores se cuelgan de un objeto, uno le quita la vida al jugador y el segundo destruye el objeto al que está unido.
Para comenzar, escribiremos una función que tomará la vida del jugador, y es necesaria para ambas opciones:
public int health = 3; void Hurt() { health--; if (health <= 0) SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex); }
1 opción
Analizaremos la primera opción si el punto de contacto es mayor o igual a una altura de 0.6, el jugador salta desde arriba del enemigo es destruido, de lo contrario el jugador recibe daño.
void OnCollisionEnter2D(Collision2D collision) { Enemy enemy = collision.collider.GetComponent<Enemy>(); if (enemy != null) { foreach (ContactPoint2D point in collision.contacts) { if (point.normal.y >= 0.6f) { enemy.EnemyHurt(); } else { Hurt(); } } }
(Un fragmento del código que está colgado en el reproductor)
public void EnemyHurt() { Destroy(this.gameObject); }
(Un fragmento de código que cuelga del enemigo)
2 opciones
Agregue un colisionador, hágalo un poco más alto que el colisionador principal, marque "es Trigger" en el objeto, cuelgue el script y agregue este fragmento de código.
private void OnTriggerEnter2D(Collider2D collision) { if (collision.gameObject.name == "Player") Destroy(this.gameObject); }
(Un fragmento de código que cuelga del enemigo)
Cuando el colisionador toca un objeto llamado "Jugador", el objeto se destruye (como marca de contacto, puede usar la etiqueta).
Además, en el mismo objeto creamos un gameObject más y lo llamamos DeathZone. Agregue un colisionador, hágalo un poco más grande y marque la casilla "es Trigger".

private void OnTriggerEnter2D(Collider2D collision) { if (collision.gameObject.name == "DeathZone") { Hurt(); } }
(Un fragmento del código que está colgado en el reproductor)
Como puede ver, a diferencia de la primera opción, en la segunda opción, el uso de colisionadores era ligeramente mayor y no había necesidad de usar desencadenantes.

(Segunda opción)
También puede agregar que el jugador salta después de la destrucción del enemigo. Bueno, todo parece ser, ¡gracias a todos por su atención!