using System.Collections;
using System.Collections.Generic;
public class Inimigo : MonoBehaviourPun
[Header("Dados do Inimigo")]
public string nomeInimgo;
public float alcanceAtaque;
private ControleJogador JogadorAlvo;
public float tempoProcurarJogador = 0.2f;
private float tempoUltimaProcura;
private Vector3 posInicio;
public float poderAtaque;
public float tempoEntreAtaques;
private float ultimoAtaque;
public TextMeshProUGUI nomeInimigoTXT;
public SpriteRenderer sr;
public Rigidbody2D corpoInimigo;
public GameObject barraVidaInimigo;
public GameObject CanvaUI;
public Animator animInimigo;
photonView.RPC("InicializaInimigo",RpcTarget.All);
if(!PhotonNetwork.IsMasterClient)
if(JogadorAlvo != null && !Morto)
float distancia = Vector2.Distance(transform.position, JogadorAlvo.transform.position);
if(distancia < alcanceAtaque && Time.time - ultimoAtaque >= tempoEntreAtaques && !JogadorAlvo.Morto)
StartCoroutine("Atacar");
else if(distancia > alcanceAtaque && !Atacando)
Vector3 dir = JogadorAlvo.transform.position - transform.position;
corpoInimigo.velocity = dir.normalized * moveSpeed;
corpoInimigo.velocity = Vector2.zero;
corpoInimigo.velocity = Vector3.zero;
animInimigo.SetBool("Running", (corpoInimigo.velocity.magnitude != 0));
animInimigo.SetBool("Dead", Morto);
public void InicializaInimigo ()
posInicio = transform.position;
nomeInimigoTXT.text = nomeInimgo;
photonView.RPC("AtualizaVidaInimigo",RpcTarget.All,vidaAtual);
animInimigo.SetTrigger("Attack");
ultimoAtaque = Time.time;
JogadorAlvo.photonView.RPC("RecebeDano", JogadorAlvo.photonPlayer, poderAtaque);
yield return new WaitForSeconds(0.3f);
if(Time.time - tempoUltimaProcura > tempoProcurarJogador)
tempoUltimaProcura = Time.time;
foreach(ControleJogador player in CriaPlayer.instance.jogadores)
float dist = Vector2.Distance(transform.position, player.transform.position);
if(player == JogadorAlvo)
corpoInimigo.velocity = Vector3.zero;
public void RecebeDano (float dano)
photonView.RPC("AtualizaVidaInimigo", RpcTarget.All, vidaAtual);
photonView.RPC("GerarEfeitoDano", RpcTarget.All);
StartCoroutine(EfeitoDano());
yield return new WaitForSeconds(0.05f);
public void AtualizaVidaInimigo (float vida)
barraVidaInimigo.transform.localScale = new Vector3(vidaAtual/vidaMaxima,1,1);
corpoInimigo.isKinematic = true;
GetComponent<CapsuleCollider2D>().enabled = false;
yield return new WaitForSeconds(0.5f);
CanvaUI.SetActive(false);
yield return new WaitForSeconds(2.0f);
PhotonNetwork.Destroy(gameObject);
Vector2 Velocidade = corpoInimigo.velocity;
var localvel = transform.InverseTransformDirection(Velocidade);
photonView.RPC("AjustaInimigo",RpcTarget.All,-1f,-0.01f);
photonView.RPC("AjustaInimigo",RpcTarget.All,1f,0.01f);
void AjustaInimigo(float ScaleX, float CanvaScaleX)
transform.localScale = new Vector3(ScaleX,1,1);
CanvaUI.transform.localScale = new Vector3(CanvaScaleX,CanvaUI.transform.localScale.y,CanvaUI.transform.localScale.z);