Menu
CoddyTech

Itens coletáveis

Parte da seção Física e Jogabilidade do Journey de Unity da Coddy. Lição 17 de 71.

Um item coletável é um gatilho com um script próprio. Quando algo entra, o item coletável verifica se é o jogador, transfere seu efeito e se destrói. O script do jogador mantém o resultado e oferece um método público para isso. Este pacote de vida cura qualquer objeto que tenha um script Health:

// HealthPack.cs
public int amount = 25;

void OnTriggerEnter(Collider other)
{
    if (other.TryGetComponent(out Health health) && health.hp < 100)
    {
        health.Heal(amount);
        Destroy(gameObject);
    }
}
// Health.cs, no jogador
public int hp = 50;

public void Heal(int amount)
{
    hp = Mathf.Min(hp + amount, 100);
    Debug.Log("HP: " + hp);
}

other.TryGetComponent(out Health health) é false para uma caixa que desliza até o pacote, então apenas um objeto com um script Health pode coletá-lo, e um jogador com a vida cheia deixa o pacote para depois. O pacote encontra o jogador por meio de other, então nenhum pacote precisa de uma referência no Inspector, e um nível pode ter cinquenta deles. Heal é public porque outro script o chama, e o limite de 100 fica em Health, o único lugar que controla hp. Destroy(gameObject) remove o pacote; Destroy(other.gameObject) removeria o jogador.

challenge icon

Desafio

Fácil

Faça as caixas de munição reabastecerem o Blaster (ammo 4, maxAmmo 10).

  1. Em Blaster.cs, adicione public int AddAmmo(int amount): int taken = Mathf.Min(amount, maxAmmo - ammo);, adicione esse valor a ammo, registre "Ammo: " + ammo e retorne taken.
  2. Em AmmoCrate.cs, quando other.TryGetComponent(out Blaster blaster), chame blaster.AddAmmo(amount); e Destroy(gameObject);.

Pressione “Jogar” e caminhe para a direita: o Console mostra Ammo: 7 e, em seguida, Ammo: 10. Depois, pressione “Verificar”.

Experimente você mesmo

using UnityEngine;

public class AmmoCrate : MonoBehaviour
{
    public int amount = 3;

    void OnTriggerEnter(Collider other)
    {
        // O Blaster do jogador pega a munição, e a caixa desaparece
    }
}

Todas as lições de Física e Jogabilidade

Pratique por conta própria: Playground de Unity