IA zumbie veloz de mais
3 participantes
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
IA zumbie veloz de mais
Estou com esse script de uma IA de um zumbie mais ele fica muito rapido como flesh como posso ajeitar isso?
Boa tarde a todos e obrigado.
Boa tarde a todos e obrigado.
- Código:
using UnityEngine;
using System.Collections;
public class Enemigo : MonoBehaviour {
public float Vida= 100;//vida
public Animator anim;
public NavMeshAgent nav;
public Transform player;//segui o player
public PlayerVida vidaPlayer;//script vida do player
public int ataque;//ataque
public bool AtacBool;
CharacterController character;
public float distancia;//distancia entre o player e o inimigo
public int muerte;
void Start (){
muerte = Random.Range (1, 3);
character.enabled = true;
AtacBool = false;
}
void Update (){
//CALCULAR DISTANCIA
distancia = Vector3.Distance(transform.position, player.position);
//SEGUIR O PLAYER
if(Vida >= 1){
nav.destination = player.position;
}
if(distancia > 3){
nav.speed = 2;
anim.SetBool("ataque", false);
}
//ATAQUE
if(distancia < nav.stoppingDistance && AtacBool == false){
nav.speed = 0;
anim.SetBool("ataque", true);
Invoke("Ataque", 1.1f);
AtacBool = true;
}
//VIDA
if(Vida <=0){
nav.speed = 0;
Invoke("Muerto", 5);
character.enabled = false;
if(muerte == 1){
anim.SetBool("muerte1", true);
}
if(muerte == 2){
anim.SetBool("muerte2", true);
}
}
}
void Muerto (){
//Destroy(gameObject); //Opcion1
gameObject.SetActive(false); //Opcion2
}
void Ataque (){
Invoke("AF", 1.5f);
if(distancia <= 4 && AtacBool == true){
vidaPlayer.vida -= ataque;
}
}
void AF (){
AtacBool = false;
}
void FV ( int Dano ){
Vida -= Dano;
}
}
Última edição por Callyde Jr em Ter Mar 28, 2017 3:53 pm, editado 1 vez(es)
Re: IA zumbie veloz de mais
Por acaso o seu Inimigo tem RigidBody? pois o NavMeshAgent não é muito compativel com o RigidBody.
rafaelllsd- ProgramadorMaster
- PONTOS : 5241
REPUTAÇÃO : 507
Idade : 24
Áreas de atuação : Unity, Audacity, Blender, Gimp, C#, JS, MySQL.
Respeito as regras :
Re: IA zumbie veloz de mais
Voutira-lo,
eu alterei a velocidade e aceleracao o NavMeshAgent e nao aiantou nada
vou tirar o RigidBody
eu alterei a velocidade e aceleracao o NavMeshAgent e nao aiantou nada
vou tirar o RigidBody
Re: IA zumbie veloz de mais
Sim obrigado mais o probleminha agora e que ele não esta atacando fica so perto do player?
Re: IA zumbie veloz de mais
Resolvido eu coloquei assim o script
- Código:
using UnityEngine;
using System.Collections;
[RequireComponent(typeof( CharacterController))]
[RequireComponent(typeof(CharacterStats))]
[RequireComponent(typeof(Animator))]
public class Enimigo : MonoBehaviour {
private CharacterStats cs { get { return Player.GetComponent<CharacterStats> (); } set { cs = value; } }
private CharacterController characterController { get { return GetComponent<CharacterController> (); } set { characterController = value; } }
private RagdollManager ragdollManager { get { return GetComponentInChildren<RagdollManager> (); } set { ragdollManager = value; } }
private Collider col { get { return GetComponent<Collider> (); } set { col = value; } }
public Animator anim;
public int velocidade = 3;
public NavMeshAgent nav;
public Transform Player;
public int ataque = 12;
public bool AtacBool;
public CharacterController character;
public float distancia;
void Start (){
character.enabled = true;
AtacBool = false;
nav.speed = velocidade;
}
void Update (){
transform.LookAt (Player.transform.position);
//CALCULAR DISTANCIA
distancia = Vector3.Distance(transform.position, Player.position);
//SEGUIR AL PLAYER ou outros
if(distancia >= 4){
nav.destination = Player.position;
}
if(distancia > 3){
nav.speed = 1;
anim.SetBool("ataque", false);
}
//ATAQUE
if(distancia <= 2 + nav.stoppingDistance && AtacBool == false){
Ataque ();
nav.speed = 0;
anim.SetBool("ataque", true);
Invoke("Ataque", 1.1f);
AtacBool = true;
}
}
void Ataque (){
Invoke("AF", 1.5f);
if(distancia <= 1 && AtacBool == true){
if(Player.gameObject.GetComponent<CharacterStats> ()) {
if (Player.gameObject.tag == "Player")
{
Player.SendMessage("Damage",ataque);
}
}
}
}
void AF (){
AtacBool = false;
}
}
Última edição por John Rambo em Ter Mar 28, 2017 5:15 pm, editado 1 vez(es) (Motivo da edição : Inserir Scripts Dentro da caixa de códigos oferecida pelo fórum)
Tópicos semelhantes
» [TUTORIAL] Tocar mais de um áudio no mesmo objeto ( 2 ou mais AudioSource)
» Não tá dando mais Bake. O que pode ser?Não aparece mais as áreas em azul em
» [RESOLVIDO] Mais scripts ou mais linhas de codigo????
» Mais Um jogo!
» [TUTORIAL] Unity 5 - Wheel Collider, veículos, suspensão realista.
» Não tá dando mais Bake. O que pode ser?Não aparece mais as áreas em azul em
» [RESOLVIDO] Mais scripts ou mais linhas de codigo????
» Mais Um jogo!
» [TUTORIAL] Unity 5 - Wheel Collider, veículos, suspensão realista.
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos