Olá Neste artigo, gostaria de compartilhar como realizar a destruição de inimigos de um salto, como em Mario. Ainda estou estudando, por isso, se tenho alguma dica ou dica útil, escreva nos comentários. Bem, após várias visualizações de tutoriais e artigos lidos, apenas dois interessantes foram encontrados e provavelmente a maneira mais fácil de implementar as opções:
- o primeiro é o contato dos pontos de colisão,
- o segundo é o contato dos coletores, quando dois coletores são pendurados no objeto, um tira a vida do jogador e o segundo destrói o objeto ao qual está anexado.
Para começar, escreveremos uma função que tirará a vida do jogador e é necessária para as duas opções:
public int health = 3; void Hurt() { health--; if (health <= 0) SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex); }
1 opção
Analisaremos a primeira opção se o ponto de contato for maior ou igual a uma altura de 0,6, se o jogador pular acima do inimigo for destruído, caso contrário, o jogador sofrerá dano.
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(); } } }
(Um fragmento do código pendurado no player)
public void EnemyHurt() { Destroy(this.gameObject); }
(Um trecho de código pendurado no inimigo)
Opção 2
Adicione um colisor, aumente um pouco mais do que o colisor principal, marque "is Trigger" no objeto, desligue o script e adicione este fragmento de código.
private void OnTriggerEnter2D(Collider2D collision) { if (collision.gameObject.name == "Player") Destroy(this.gameObject); }
(Um trecho de código pendurado no inimigo)
Quando o colisor toca em um objeto chamado “Player”, o objeto é destruído (como uma marca de contato, você pode usar a tag).
Mais adiante, no mesmo objeto, criamos mais um gameObject e o chamamos de DeathZone. Adicione um colisor a ele, aumente um pouco e marque a caixa "is Trigger".

private void OnTriggerEnter2D(Collider2D collision) { if (collision.gameObject.name == "DeathZone") { Hurt(); } }
(Um fragmento do código pendurado no player)
Como você pode ver, ao contrário da primeira opção, na segunda opção, o uso de coletores era um pouco maior e não havia necessidade de usar gatilhos.

(Segunda opção)
Você também pode adicionar que o jogador pula após a destruição do inimigo. Bem, tudo parece estar, obrigado a todos pela atenção!