using UnityEngine;
public class PlayerController : MonoBehaviour
public GameObject arma; // Objeto da arma
public GameObject esfera; // Objeto da esfera
public float velocidadeEsfera = 10f; // Velocidade de movimento da esfera
public float distanciaMaximaEsfera = 10f; // Distância máxima para o raycast da esfera
public GameObject objetoC; // Objeto que terá a esfera fixada
public GameObject objetoD; // Objeto que define a nova aparência
public string nomeAnimacaoDisparo = "Disparo"; // Nome da animação de disparo
public string nomeAnimacaoIdle = "Idle"; // Nome da animação de idle
public string nomeAnimacaoAndando = "Andando"; // Nome da animação de andando
public float distanciaInteracao = 2f; // Distância para interagir com o item no chão
private bool armaDesbloqueada = false; // Variável para controlar se a arma está
desbloqueada
private bool armaEquipada = false; // Variável para controlar se a arma está equipada
private Vector3 posicaoOriginalEsfera; // Posição original da esfera
private Animator animadorArma; // Componente Animator da arma
private GameObject itemNoChao; // Referência ao item no chão para desbloqueio
void Start()
posicaoOriginalEsfera = [Link]; // Guarda a posição original da esfera
[Link](false); // Desativa a arma no início do jogo
animadorArma = [Link]<Animator>(); // Obtém o componente Animator
da arma
void Update()
{
// Verifica se o jogador interagiu com o item no chão
if (itemNoChao != null && [Link]([Link],
[Link]) <= distanciaInteracao)
armaDesbloqueada = true;
Destroy(itemNoChao); // Remove o item do chão
itemNoChao = null;
// Equipa a arma se a tecla "2" for pressionada e a arma estiver desbloqueada
if ([Link](KeyCode.Alpha2) && armaDesbloqueada)
armaEquipada = !armaEquipada;
[Link](armaEquipada);
[Link](nomeAnimacaoEquipando);
yield return new WaitForSeconds(2f);
// Define a animação de idle se a arma for equipada
if (armaEquipada)
[Link](nomeAnimacaoIdle);
//desequipa a arma
if ([Link](KeyCode.Alpha1) && armaEquipada)
armaEquipada = false;
[Link](false);
}
// Se a arma estiver equipada, permite o disparo
if (armaEquipada)
// Define a animação de andando se o jogador estiver se movendo
if ([Link]("Horizontal") != 0 || [Link]("Vertical") != 0)
[Link](nomeAnimacaoAndando);
else
[Link](nomeAnimacaoIdle);
// Dispara a esfera se o botão esquerdo do mouse for pressionado
if ([Link](0))
AtirarEsfera();
void OnTriggerEnter(Collider other)
// Verifica se o jogador interagiu com o item no chão
if ([Link]("ItemDesbloqueio"))
itemNoChao = [Link];
void AtirarEsfera()
{
Ray raio = [Link]([Link]);
RaycastHit hit;
if ([Link](raio, out hit, distanciaMaximaEsfera))
// Move a esfera para o ponto de impacto
[Link] = [Link];
// Verifica se a esfera atingiu o objeto C
if ([Link] == objetoC)
// Fixa a esfera no objeto C
[Link] = [Link];
// Verifica se a esfera atingiu o objeto D
else if ([Link] == objetoD)
// Fixa o objeto C no objeto D
[Link] = [Link];
// Retorna a esfera para a posição original após um tempo
Invoke("RetornarEsferaParaPosicaoOriginal", 2f);
// Inicia a animação de disparo
[Link](nomeAnimacaoDisparo);
void RetornarEsferaParaPosicaoOriginal()
{
// Retorna a esfera para a posição original
[Link] = [Link];
[Link] = posicaoOriginalEsfera;