Estou a uma semana tentando resolver esse problema, como eu disse no título meu jogo não roda mais quando aperto Play depois que tentei refatorar a animação do personagem no novo scripts que criamos durante o curso. Seguindo a aula eu consegui fazer o personagem se mover porem ficou sem animação, aí na parte de animação em diante já não funcionou mais, quando eu clico em play aparece no console da unity a seguinte mensagem. Eu tenho que resolver isso porque está me atrapalhando a progredir no curso.
Se precisar baixar o projeto todo do jogo - > https://drive.google.com/file/d/1GjFdexxE0kaYJ8zl_FXOwae0S0EiCLmU/view?usp=sharing
NullReferenceException: Object reference not set to an instance of an object
ControlaBoneco.Start () (at Assets/Scripts/ControlaBoneco.cs:27)
NullReferenceException: Object reference not set to an instance of an object
ControlaBoneco.Update () (at Assets/Scripts/ControlaBoneco.cs:40)
Abaixo vou deixar os dois scrips relacionados a esse erro. OBS: eu mudei alguns nomes espero que nao esteja muito complicado para entender.
NOME DO SCRIPT -> CONTROLA BONECO = CONTROLA JOGADOR
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
public class ControlaBoneco : MonoBehaviour
{
public float Velocity = 10;
private Vector3 direction;
public LayerMask FloorMask;
public GameObject GameOver;
public UiControl scriptUiControl;
public AudioClip DamageSound;
public float smoothing = 5;
public float maxHealth;
private PlayerMoviment myPlayerMoviment;
private CharacterAnimation playerAnimation;
public int Life = 100;
private void Start()
{
Time.timeScale = 1;
myPlayerMoviment = GetComponent<PlayerMoviment>();
playerAnimation.GetComponent<CharacterAnimation>();
}
// Update is called once per frame
void Update()
{
float eixoX = Input.GetAxis("Horizontal");
float eixoZ = Input.GetAxis("Vertical");
direction = new Vector3(eixoX, 0, eixoZ);
playerAnimation.Movendo(direction.magnitude);
if (Life <= 0)
{
if (Input.GetButtonDown("Fire1"))
{
SceneManager.LoadScene("jogo");
}
}
}
void FixedUpdate()
{
myPlayerMoviment.Movimentation(direction, Velocity);
myPlayerMoviment.PlayerRotation(FloorMask);
}
public void TakeDamage(int damage)
{
Life -= damage;
scriptUiControl.RefreshSliderLifePlayer();
AudioControl.instance.PlayOneShot(DamageSound);
if(Life <= 0)
{
Time.timeScale = 0;
GameOver.SetActive(true);
}
}
}
SCRIPT DE ANIMAÇÃO
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CharacterAnimation : MonoBehaviour
{
public void AnimationMoviment (Vector3 direction)
{
myAnimator.SetFloat("moving", direction.magnitude);
}
public Animator myAnimator;
public void Awake ()
{
myAnimator = GetComponent<Animator>();
}
public void Attack (bool state)
{
myAnimator.SetBool("Attack", state);
}
public void Movendo (float movimentValue)
{
myAnimator.SetFloat("correr", movimentValue);
}
}