Solucionado (ver solução)
Solucionado
(ver solução)
6
respostas

Os personagens não estão se movimentando

CONTROLA INIMIGO

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ControlaInimigo : MonoBehaviour
{
    public GameObject jogador;
    public float velocidade = 5;
    private MovimentoPersonagem MovimentaInimigo;
    private Animator animatorInimigo;
    // Start is called before the first frame update
    void Start()
    {
        jogador = GameObject.FindWithTag("Jogador");
        int geraTipoZumbi = Random.Range(1, 28);
        transform.GetChild(geraTipoZumbi).gameObject.SetActive(true);
        MovimentaInimigo = GetComponent<MovimentoPersonagem>();
        animatorInimigo = GetComponent<Animator>();
    }

    // Update is called once per frame

     void FixedUpdate()
    {
        Vector3 direcao = jogador.transform.position - transform.position;
        MovimentaInimigo.rotacao(direcao);
        float distancia = Vector3.Distance(transform.position, jogador.transform.position);
        if (distancia > 2.5)
        {

            MovimentaInimigo.Movimentar(direcao, velocidade);
            GetComponent<Animator>().SetBool("Atacando", false);
        }
        else
        {
            GetComponent<Animator>().SetBool("Atacando", true);
        }
    }
   void AtacaJogador()
  {
        int dano = Random.Range(20, 30);
        jogador.GetComponent<ControladorJogador>().Tomardano(dano);
  }
}

MOVIMENTO PERSONAGEM

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class MovimentoPersonagem : MonoBehaviour
{
    private Rigidbody meuRigidbody;
     void Awake ()
     {
        meuRigidbody = GetComponent<Rigidbody>();
     }
    // Start is called before the first frame update

    public void Movimentar(Vector3 direcao, float velocidade)
    {
        GetComponent<Rigidbody>().MovePosition
                (GetComponent<Rigidbody>().position +
                direcao.normalized * velocidade * Time.deltaTime);
    }


    public void RotacionarPersonagens (Vector3 direcao)
    {
        Quaternion novaRotacao = Quaternion.LookRotation(direcao);
        meuRigidbody.MoveRotation(novaRotacao);
    }

    internal void rotacao(Vector3 direcao)
    {
        throw new NotImplementedException();
    }
}
6 respostas

Oi, Ronaldo, tudo bem?

Aparece algum erro no seu console? Esse método rotacao com o throw pode estar travando seu código também.

Boa tarde professor, seu tiro rotação com o throw o visual da como errado e aparece o um erros no console: NotImplementedException: The method or operation is not implemented. MovimentoPersonagem.rotacao (UnityEngine.Vector3 direcao) (at Assets/Scripts/MovimentoPersonagem.cs:31) ControlaInimigo.FixedUpdate () (at Assets/Scripts/ControlaInimigo.cs:26) agradeço deis de já

solução!

Apaga essa linha MovimentaInimigo.rotacao(direcao); por enquanto do seu método porque parece que você tá usando o método errado. Veja se isso mostra outro erro ou resolve o problema.

Resolveu o problema da movimentação, mas agora os zumbis não estão rodando em direção ao personagem agradeço deis de já

Professor consegui aqui estava usando variável errada e não tinha me tocado muito obrigado pela atenção

Sem problemas. Qualquer coisa estamos por aqui :)

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software