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();
}
}