using System.Collections;
using System.Collections.Generic;
public class ControleJogador : MonoBehaviourPun
[Header ("Dados do jogador")]
[HideInInspector] public bool Morto = false;
private float velMover = 4f;
public Player photonPlayer;
public float poderAtaque;
public float alcanceAtaque;
[Header ("Objetos e Componentes")]
public GameObject barraVida;
public GameObject CanvaUI;
public SpriteRenderer imgJogador;
public TextMeshProUGUI nomeJogadorTxt;
private Animator animator;
private Rigidbody2D corpo;
public static ControleJogador meuHeroi;
corpo = GetComponent<Rigidbody2D> ();
animator = GetComponent<Animator> ();
public void InicializaJogador (Player player)
CriaJogador.instance.jogadores.Add (this);
StartCoroutine (PegaDadosJogador ());
IEnumerator PegaDadosJogador ()
PlayfabLogin.PFL.PegaDadosJogador ("VidaAtual");
yield return new WaitForSeconds (0.5f);
PlayfabLogin.PFL.PegaDadosJogador ("VidaMaxima");
yield return new WaitForSeconds (0.5f);
VidaAtual = int.Parse (PlayerPrefs.GetString ("VidaAtual", "100"));
VidaMaxima = int.Parse (PlayerPrefs.GetString ("VidaMaxima", "100"));
nomeJogadorTxt.text = player.NickName;
photonView.RPC ("AtualizaBarraVida", RpcTarget.All, VidaAtual);
corpo.isKinematic = true;
private void AnimaJogador ()
animator.SetBool ("Morto", Morto);
if (corpo.velocity.x != 0 || corpo.velocity.y != 0)
animator.SetFloat ("Velocidade", 1);
animator.SetFloat ("Velocidade", 0);
MoveX = Input.GetAxisRaw ("Horizontal");
MoveY = Input.GetAxisRaw ("Vertical");
if (Input.GetMouseButtonDown (0))
animator.SetTrigger ("Ataque");
Vector3 direcao = (Input.mousePosition - Camera.main.WorldToScreenPoint (transform.position)).normalized;
RaycastHit2D hit = Physics2D.Raycast (transform.position + direcao, direcao, alcanceAtaque);
if (hit.collider != null && hit.collider.gameObject.CompareTag ("Inimigo"))
Inimigo inimigo = hit.collider.gameObject.GetComponent<Inimigo> ();
inimigo.photonView.RPC ("RecebeDano", RpcTarget.MasterClient, poderAtaque);
photonView.RPC ("AjustaUI", RpcTarget.All, 1f, 0.01f);
photonView.RPC ("AjustaUI", RpcTarget.All, -1f, -0.01f);
corpo.velocity = new Vector2 (MoveX, MoveY) * velMover;
void AjustaUI (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);
private void AtualizaBarraVida (float vida)
barraVida.transform.localScale = new Vector3 (vida / VidaMaxima, 1, 1);
void RecebeDano (float dano)
PlayfabLogin.PFL.SalvaDadosJogador ("VidaAtual", VidaAtual.ToString ());
PlayerPrefs.SetString ("VidaAtual", VidaAtual.ToString ());
photonView.RPC ("GerarEfeitoDanoRecebido", RpcTarget.All);
photonView.RPC ("AtualizaBarraVida", RpcTarget.All, VidaAtual);
photonView.RPC ("AtualizaBarraVida", RpcTarget.All, VidaAtual);
void GerarEfeitoDanoRecebido ()
StartCoroutine (EfeitoDano ());
IEnumerator EfeitoDano ()
imgJogador.color = Color.red;
yield return new WaitForSeconds (0.05f);
imgJogador.color = Color.white;
corpo.isKinematic = true;
corpo.velocity = Vector3.zero;
StartCoroutine ("Reviver");
PlayfabLogin.PFL.SalvaDadosJogador ("VidaAtual", VidaMaxima.ToString ());
yield return new WaitForSeconds (2);
transform.position = CriaJogador.instance.spawnPoints[Random.Range (0, CriaJogador.instance.spawnPoints.Length)].position;
corpo.isKinematic = false;
photonView.RPC ("AtualizaBarraVida", RpcTarget.All, VidaAtual);