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.
Desafio
FácilFaça as caixas de munição reabastecerem o Blaster (ammo 4, maxAmmo 10).
- Em
Blaster.cs, adicionepublic int AddAmmo(int amount):int taken = Mathf.Min(amount, maxAmmo - ammo);, adicione esse valor aammo, registre"Ammo: " + ammoe retornetaken. - Em
AmmoCrate.cs, quandoother.TryGetComponent(out Blaster blaster), chameblaster.AddAmmo(amount);eDestroy(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
1Rigidbody
Gravidade e MassaEmpurrar com AddForcePular com um ImpulsoFixedUpdate para FísicaVelocidadeCorpos CinemáticosRevisão: Plataforma de Lançamento4Corrotinas
InvocarInvocar repetidamente, Cancelar invocaçãoSua primeira corrotinaLoops em corrotinasInterrompendo corrotinasRevisão: contagem regressiva10Projeto: Fuga da Arena
A ArenaCaçadores2Colisões
OnCollisionEnterO que eu acertei?Quebre no impactoNo chãoQuique e atritoFormas dos collidersRevisão: Parede destrutível5Projeto: Corrida das Moedas
A Bola RolanteMoedas para ColetarPratique por conta própria: Playground de Unity