Olá, está ocorrendo um erro nos códigos "AnimacaoPersonagem" e "controlarJogador" fazendo aparecer "Parameter type 'Movendo' does not match". Além de aparecer infinitas mensagens, a personagem não para de andar e fazer o som do passo.
Aqui está o meu código⇩ AnimacaoPersonagem ` using System.Collections; using System.Collections.Generic; using UnityEngine;
public class AnimacaoPersonagem : MonoBehaviour { public Animator meuAnimator;
void Awake ()
{
meuAnimator = GetComponent<Animator>();
}
public void Atacar (bool estado)
{
meuAnimator.SetBool("Atacando", estado);
}
public void Movimentar(float estado)
{
meuAnimator.SetFloat("Movendo", estado);
}
public void Morrer ()
{
meuAnimator.SetTrigger("Morrendo");
}
}
***controlarJogador***
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class controlarJogador : MonoBehaviour, IMatavel, ICuravel {
private Vector3 direcao;
public LayerMask MascaraChao;
public GameObject TextoGameOver;
public ControlarInterface scriptControlarInterface;
public AudioClip SomDeDano;
private MovimentoJogador meuMovimentoJogador;
private AnimacaoPersonagem animacaoJogador;
public Status statusJogador;
void Start()
{
Time.timeScale = 1;
meuMovimentoJogador = GetComponent <MovimentoJogador>();
animacaoJogador = GetComponent<AnimacaoPersonagem>();
statusJogador = GetComponent<Status>();
}
// Update is called once per frame
void Update()
{
animacaoJogador.Movimentar(meuMovimentoJogador.Direcao.
magnitude);
}
void FixedUpdate()
{
meuMovimentoJogador.Movimentar(statusJogador.Velocidade);
meuMovimentoJogador.RotacaoJogador();
}
//faz o Jogador tomar dano do zumbi
public void TomarDano(int dano)
{
statusJogador.Vida -= dano;
scriptControlarInterface.AtualizarSliderVidaJogador();
ControlarAudio.instancia.PlayOneShot(SomDeDano);
if (statusJogador.Vida <= 0)
{
Morrer();
}
}
//faz o Jogador morrer e aparecer as interfaces
public void Morrer ()
{
scriptControlarInterface.GameOver();
}
public void CurarVida (int quantidadeDeCura)
{
statusJogador.Vida += quantidadeDeCura;
if(statusJogador.Vida > statusJogador.VidaInicial)
{
statusJogador.Vida = statusJogador.VidaInicial;
}
scriptControlarInterface.AtualizarSliderVidaJogador();
}
}
/GetComponent().MovePosition (GetComponent().position + (statusJogador.Velocidade * Time.deltaTime * direcao));/ ` Espero que possam me ajudar a resolver este problema, para que eu possa continuar minha formação neste curso. Bom dia a todos.
.
Esta imagem vai estar com uma baixa qualidade, mas nela eu estou com o cursor em cima da "magnitude" e está aparecendo "float Vector3.magnitude {get;} (na parte de baixo da mensagem) => Returns the length of this vector (Read Only)."
O que me faz pensar que o erro realmente não está no "controlarJogador" mas sim no "AnimacaoPersonagem" .
Consegui resolver o erro que aparece as mensagens de erro loucamente (fazendo um método chamado "ParametroParaAnimacao" onde eu tirei o "animacaoJogador.Movimentar((float)meuMovimentoJogador.Direcao.magnitude);" do Update e coloquei tudo neste método público (tabém criando um var para poder facilitar um pouco o código) e por fim coloquei isto no "Quando Mudar O Valor (Vector2)").
Se eu estivér errado em alguma coisa no que fiz, por favor me corrijam. Ainda aguardo nova solução, pois tenho que dá continuidade às aulas, que no momento estão paradas. Agradeço a todos que estão me ajudando.