[AJUDA] NavMesh bugado
2 participantes
Página 1 de 1
[AJUDA] NavMesh bugado
Estou utilizando o script do Marcos Schultz editado pelo Yuri Heinz, que deixa a IA do inimigo funcional, e funciona tudo numa boa, ta tudo configuradinho, porém, ocorre um tipo de bug no navmesh quando vai alternar entre alguns estados, como do estado ''idle'' para o estado ''correr'', ou do estado ''correr'' para ''atacar'', se alguém souber alguma forma de consertar esse bug do navmesh ''deslizar'', e puder me ajudar, eu agradeço. Segue um trechinho de gameplay do game com o bug acontecendo.
AmazingDeliciano- Membro
- PONTOS : 1772
REPUTAÇÃO : 3
Respeito as regras :
Re: [AJUDA] NavMesh bugado
Opa, os códigos são esses aqui, porém, eu consegui fazer uma pequena ''gambiarra'' que de certa forma arrumou, o tempo entre as animações e a troca de ações estava desigual, então enquanto o NavMesh executava a animação de perseguir, o inimigo ainda estava na animação de idle, então reduzi o tempo das animações e funcionou de boa.
[list=linenums]
[*]using UnityEngine;
[*]using System.Collections;
[*]public class INTELIGENCIA2 : MonoBehaviour {
[*] public Transform Player;
[*] private NavMeshAgent naveMesh;
[*] public float DistanciaDoPlayer, DistanciaDoAIPoint;
[*] public float DistanciaDePercepcao = 30,DistanciaDeSeguir = 20, DistanciaDeAtacar = 2, VelocidadeDePasseio = 3, VelocidadeDePerseguicao = 6,TempoPorAtaque = 1.5f, DanoDoInimigo = 40;
[*] private bool VendoOPlayer;
[*] public Transform[] DestinosAleatorios;
[*] private int AIPointAtual;
[*] private bool PerseguindoAlgo, contadorPerseguindoAlgo,atacandoAlgo,contadorOlhar ;
[*] private float cronometroDaPerseguicao,cronometroAtaque, cronometroOlhar;
[*] public bool BPassear, BOlhar, BPerseguir, BAtacar;
[*] void Start (){
[*] AIPointAtual = Random.Range (0, DestinosAleatorios.Length);
[*] naveMesh = transform.GetComponent<NavMeshAgent> ();
[*] }
[*] void Update (){
[*] DistanciaDoPlayer = Vector3.Distance(Player.transform.position,transform.position);
[*] DistanciaDoAIPoint = Vector3.Distance(DestinosAleatorios[AIPointAtual].transform.position,transform.position);
[*] //============================== RAYCAST ===================================//
[*] RaycastHit hit;
[*] Vector3 deOnde = transform.position;
[*] Vector3 paraOnde = Player.transform.position;
[*] Vector3 direction = paraOnde - deOnde;
[*] if(Physics.Raycast (transform.position,direction,out hit,1000) && DistanciaDoPlayer < DistanciaDePercepcao ){
[*] if(hit.collider.gameObject.CompareTag("Player")){
[*] VendoOPlayer = true;
[*] }else{
[*] VendoOPlayer = false;
[*] }
[*] }
[*] //================ CHECHAGENS E DECISOES DO INIMIGO ================//
[*] if(DistanciaDoPlayer > DistanciaDePercepcao && cronometroOlhar < 5){
[*] PerseguindoAlgo = false;
[*] BPassear = true;
[*] Passear();
[*] }
[*] if (DistanciaDoPlayer <= DistanciaDePercepcao && DistanciaDoPlayer > DistanciaDeSeguir && cronometroOlhar < 5) {
[*] if(VendoOPlayer == true){
[*] BOlhar = true;
[*] Olhar ();
[*] }else{
[*] BPassear = true;
[*] Passear();
[*] }
[*] }
[*] if (DistanciaDoPlayer <= DistanciaDeSeguir && DistanciaDoPlayer > DistanciaDeAtacar ) {
[*] if(VendoOPlayer == true){
[*] BPerseguir = true;
[*] Perseguir();
[*] PerseguindoAlgo = true;
[*] }else{
[*] BPassear = true;
[*] Passear();
[*] }
[*] }
[*] if (DistanciaDoPlayer <= DistanciaDeAtacar ) {
[*] BAtacar = true;
[*] Atacar();
[*] }
[*] //COMANDOS DE PASSEAR
[*] if (DistanciaDoAIPoint <= 2) {
[*] AIPointAtual = Random.Range (0, DestinosAleatorios.Length);
[*] BPassear = true;
[*] Passear();
[*] }
[*] //CONTADORES DE OLHAR
[*] if (contadorOlhar == true) {
[*] cronometroOlhar += Time.deltaTime;
[*] }
[*] if (cronometroOlhar >= 5 ) {
[*] Perseguir();
[*] }
[*] if (cronometroOlhar >= 8 ) {
[*] contadorOlhar = false;
[*] cronometroOlhar = 0;
[*] Perseguir();
[*] }
[*] //CONTADORES DE PERSEGUICAO
[*] if (contadorPerseguindoAlgo == true) {
[*] cronometroDaPerseguicao += Time.deltaTime;
[*] }
[*] if (cronometroDaPerseguicao >= 5 && VendoOPlayer == false) {
[*] contadorPerseguindoAlgo = false;
[*] cronometroDaPerseguicao = 0;
[*] PerseguindoAlgo = false;
[*] }
[*] // Freio do ATAQUE
[*] if (DistanciaDoPlayer <= DistanciaDeAtacar - 1) {
[*] naveMesh.destination = gameObject.transform.position;
[*] }
[*] // CONTADOR DE ATAQUE
[*] if (atacandoAlgo == true) {
[*] transform.LookAt (new Vector3 (Player.transform.position.x, transform.position.y, Player.transform.position.z));
[*] cronometroAtaque += Time.deltaTime;
[*] }
[*] if (cronometroAtaque >= TempoPorAtaque && DistanciaDoPlayer <= DistanciaDeAtacar) {
[*] atacandoAlgo = true;
[*] cronometroAtaque = 0;
[*] //PLAYER.VIDA = PLAYER.VIDA - DanoDoInimigo;
[*] Debug.Log ("recebeuAtaque");
[*] } else if (cronometroAtaque >= TempoPorAtaque && DistanciaDoPlayer > DistanciaDeAtacar) {
[*] atacandoAlgo = false;
[*] cronometroAtaque = 0;
[*] Debug.Log ("errou");
[*] }
[*] }
[*] void Passear (){
[*] BOlhar = false;
[*] BPerseguir = false;
[*] BAtacar = false;
[*] if (PerseguindoAlgo == false) {
[*] naveMesh.acceleration = 5;
[*] naveMesh.speed = VelocidadeDePasseio;
[*] naveMesh.destination = DestinosAleatorios [AIPointAtual].position;
[*] } else if (PerseguindoAlgo == true) {
[*] contadorPerseguindoAlgo = true;
[*] }
[*] }
[*] void Olhar(){
[*] contadorOlhar = true;
[*] BPassear = false;
[*] BPerseguir = false;
[*] BAtacar = false;
[*] naveMesh.speed = 0;
[*] transform.LookAt (Player);
[*] }
[*] void Perseguir(){
[*] BPassear = false;
[*] BOlhar = false;
[*] BAtacar = false;
[*] naveMesh.acceleration = 8;
[*] naveMesh.speed = VelocidadeDePerseguicao;
[*] naveMesh.destination = Player.position;
[*] }
[*] void Atacar (){
[*] BPassear = false;
[*] BOlhar = false;
[*] BPerseguir = false;
[*] atacandoAlgo = true;
[*] }
[*]}
[/list]
[list=linenums]
[*]using UnityEngine;
[*]using System.Collections;
[*][RequireComponent(typeof(Animator))]
[*][RequireComponent(typeof(AudioSource))]
[*]public class AninINTELIGENCIA : MonoBehaviour {
[*] public INTELIGENCIA2 Navgador;
[*] public AudioClip Atacar, Olhar, Passear, Perseguir;
[*] public bool AldioTocando;
[*] public float AldioDuracao;
[*] // Use this for initialization
[*] void Start () {
[*] }
[*] // Update is called once per frame
[*] void Update () {
[*] if (AldioTocando == true) {/// AldioTocando ------------------------------------------------------
[*] AldioDuracao += Time.deltaTime;
[*] if (AldioDuracao >= GetComponent<AudioSource> ().clip.length ) {
[*] AldioTocando = false;
[*] AldioDuracao = 0;
[*] }
[*] }//----------------------------------------------------------------------------------------------------
[*] if (Navgador.BAtacar == true) {/// Atacar ------------------------------------------------------
[*] GetComponent<Animator> ().SetBool ("Atacar", true);
[*] GetComponent<AudioSource> ().clip = Atacar;
[*] GetComponent<AudioSource> ().PlayOneShot (Atacar);
[*] } else {
[*] GetComponent<Animator> ().SetBool ("Atacar", false);
[*] }//----------------------------------------------------------------------------------------------------
[*] if (Navgador.BOlhar == true) {/// Olhar ------------------------------------------------------
[*] GetComponent<Animator> ().SetBool ("Olhar", true);
[*] if (GetComponent<AudioSource> ().clip != Olhar) {
[*] AldioTocando = false;
[*] AldioDuracao = 0;
[*] Debug.Log ("Aldio Trocado");
[*] }
[*] if (AldioTocando == false) {
[*] GetComponent<AudioSource> ().clip = Olhar;
[*] GetComponent<AudioSource> ().PlayOneShot (Olhar);
[*] AldioTocando = true;
[*] }
[*] } else {
[*] GetComponent<Animator> ().SetBool ("Olhar", false);
[*] }//----------------------------------------------------------------------------------------------------
[*] if (Navgador.BPassear == true) {/// Passear ------------------------------------------------------
[*] GetComponent<Animator> ().SetBool ("Passear", true);
[*] if (GetComponent<AudioSource> ().clip != Passear) {
[*] AldioTocando = false;
[*] AldioDuracao = 0;
[*] Debug.Log ("Aldio Trocado");
[*] }
[*] if (AldioTocando == false) {
[*] GetComponent<AudioSource> ().clip = Passear;
[*] GetComponent<AudioSource> ().PlayOneShot (Passear);
[*] AldioTocando = true;
[*] }
[*] } else {
[*] GetComponent<Animator> ().SetBool ("Passear", false);
[*] }//----------------------------------------------------------------------------------------------------
[*] if (Navgador.BPerseguir == true) { /// perseguir ------------------------------------------------------
[*] GetComponent<Animator> ().SetBool ("Perseguir", true);
[*] if (GetComponent<AudioSource> ().clip != Perseguir) {
[*] AldioTocando = false;
[*] AldioDuracao = 0;
[*] Debug.Log ("Aldio Trocado");
[*] }
[*] if (AldioTocando == false) {
[*] GetComponent<AudioSource> ().clip = Perseguir;
[*] GetComponent<AudioSource> ().PlayOneShot (Perseguir);
[*] AldioTocando = true;
[*] }
[*] } else {
[*] GetComponent<Animator> ().SetBool ("Perseguir", false);
[*] }//----------------------------------------------------------------------------------------------------
[*] }
[*]}
[/list]
[list=linenums]
[*]using UnityEngine;
[*]using System.Collections;
[*]public class INTELIGENCIA2 : MonoBehaviour {
[*] public Transform Player;
[*] private NavMeshAgent naveMesh;
[*] public float DistanciaDoPlayer, DistanciaDoAIPoint;
[*] public float DistanciaDePercepcao = 30,DistanciaDeSeguir = 20, DistanciaDeAtacar = 2, VelocidadeDePasseio = 3, VelocidadeDePerseguicao = 6,TempoPorAtaque = 1.5f, DanoDoInimigo = 40;
[*] private bool VendoOPlayer;
[*] public Transform[] DestinosAleatorios;
[*] private int AIPointAtual;
[*] private bool PerseguindoAlgo, contadorPerseguindoAlgo,atacandoAlgo,contadorOlhar ;
[*] private float cronometroDaPerseguicao,cronometroAtaque, cronometroOlhar;
[*] public bool BPassear, BOlhar, BPerseguir, BAtacar;
[*] void Start (){
[*] AIPointAtual = Random.Range (0, DestinosAleatorios.Length);
[*] naveMesh = transform.GetComponent<NavMeshAgent> ();
[*] }
[*] void Update (){
[*] DistanciaDoPlayer = Vector3.Distance(Player.transform.position,transform.position);
[*] DistanciaDoAIPoint = Vector3.Distance(DestinosAleatorios[AIPointAtual].transform.position,transform.position);
[*] //============================== RAYCAST ===================================//
[*] RaycastHit hit;
[*] Vector3 deOnde = transform.position;
[*] Vector3 paraOnde = Player.transform.position;
[*] Vector3 direction = paraOnde - deOnde;
[*] if(Physics.Raycast (transform.position,direction,out hit,1000) && DistanciaDoPlayer < DistanciaDePercepcao ){
[*] if(hit.collider.gameObject.CompareTag("Player")){
[*] VendoOPlayer = true;
[*] }else{
[*] VendoOPlayer = false;
[*] }
[*] }
[*] //================ CHECHAGENS E DECISOES DO INIMIGO ================//
[*] if(DistanciaDoPlayer > DistanciaDePercepcao && cronometroOlhar < 5){
[*] PerseguindoAlgo = false;
[*] BPassear = true;
[*] Passear();
[*] }
[*] if (DistanciaDoPlayer <= DistanciaDePercepcao && DistanciaDoPlayer > DistanciaDeSeguir && cronometroOlhar < 5) {
[*] if(VendoOPlayer == true){
[*] BOlhar = true;
[*] Olhar ();
[*] }else{
[*] BPassear = true;
[*] Passear();
[*] }
[*] }
[*] if (DistanciaDoPlayer <= DistanciaDeSeguir && DistanciaDoPlayer > DistanciaDeAtacar ) {
[*] if(VendoOPlayer == true){
[*] BPerseguir = true;
[*] Perseguir();
[*] PerseguindoAlgo = true;
[*] }else{
[*] BPassear = true;
[*] Passear();
[*] }
[*] }
[*] if (DistanciaDoPlayer <= DistanciaDeAtacar ) {
[*] BAtacar = true;
[*] Atacar();
[*] }
[*] //COMANDOS DE PASSEAR
[*] if (DistanciaDoAIPoint <= 2) {
[*] AIPointAtual = Random.Range (0, DestinosAleatorios.Length);
[*] BPassear = true;
[*] Passear();
[*] }
[*] //CONTADORES DE OLHAR
[*] if (contadorOlhar == true) {
[*] cronometroOlhar += Time.deltaTime;
[*] }
[*] if (cronometroOlhar >= 5 ) {
[*] Perseguir();
[*] }
[*] if (cronometroOlhar >= 8 ) {
[*] contadorOlhar = false;
[*] cronometroOlhar = 0;
[*] Perseguir();
[*] }
[*] //CONTADORES DE PERSEGUICAO
[*] if (contadorPerseguindoAlgo == true) {
[*] cronometroDaPerseguicao += Time.deltaTime;
[*] }
[*] if (cronometroDaPerseguicao >= 5 && VendoOPlayer == false) {
[*] contadorPerseguindoAlgo = false;
[*] cronometroDaPerseguicao = 0;
[*] PerseguindoAlgo = false;
[*] }
[*] // Freio do ATAQUE
[*] if (DistanciaDoPlayer <= DistanciaDeAtacar - 1) {
[*] naveMesh.destination = gameObject.transform.position;
[*] }
[*] // CONTADOR DE ATAQUE
[*] if (atacandoAlgo == true) {
[*] transform.LookAt (new Vector3 (Player.transform.position.x, transform.position.y, Player.transform.position.z));
[*] cronometroAtaque += Time.deltaTime;
[*] }
[*] if (cronometroAtaque >= TempoPorAtaque && DistanciaDoPlayer <= DistanciaDeAtacar) {
[*] atacandoAlgo = true;
[*] cronometroAtaque = 0;
[*] //PLAYER.VIDA = PLAYER.VIDA - DanoDoInimigo;
[*] Debug.Log ("recebeuAtaque");
[*] } else if (cronometroAtaque >= TempoPorAtaque && DistanciaDoPlayer > DistanciaDeAtacar) {
[*] atacandoAlgo = false;
[*] cronometroAtaque = 0;
[*] Debug.Log ("errou");
[*] }
[*] }
[*] void Passear (){
[*] BOlhar = false;
[*] BPerseguir = false;
[*] BAtacar = false;
[*] if (PerseguindoAlgo == false) {
[*] naveMesh.acceleration = 5;
[*] naveMesh.speed = VelocidadeDePasseio;
[*] naveMesh.destination = DestinosAleatorios [AIPointAtual].position;
[*] } else if (PerseguindoAlgo == true) {
[*] contadorPerseguindoAlgo = true;
[*] }
[*] }
[*] void Olhar(){
[*] contadorOlhar = true;
[*] BPassear = false;
[*] BPerseguir = false;
[*] BAtacar = false;
[*] naveMesh.speed = 0;
[*] transform.LookAt (Player);
[*] }
[*] void Perseguir(){
[*] BPassear = false;
[*] BOlhar = false;
[*] BAtacar = false;
[*] naveMesh.acceleration = 8;
[*] naveMesh.speed = VelocidadeDePerseguicao;
[*] naveMesh.destination = Player.position;
[*] }
[*] void Atacar (){
[*] BPassear = false;
[*] BOlhar = false;
[*] BPerseguir = false;
[*] atacandoAlgo = true;
[*] }
[*]}
[/list]
[list=linenums]
[*]using UnityEngine;
[*]using System.Collections;
[*][RequireComponent(typeof(Animator))]
[*][RequireComponent(typeof(AudioSource))]
[*]public class AninINTELIGENCIA : MonoBehaviour {
[*] public INTELIGENCIA2 Navgador;
[*] public AudioClip Atacar, Olhar, Passear, Perseguir;
[*] public bool AldioTocando;
[*] public float AldioDuracao;
[*] // Use this for initialization
[*] void Start () {
[*] }
[*] // Update is called once per frame
[*] void Update () {
[*] if (AldioTocando == true) {/// AldioTocando ------------------------------------------------------
[*] AldioDuracao += Time.deltaTime;
[*] if (AldioDuracao >= GetComponent<AudioSource> ().clip.length ) {
[*] AldioTocando = false;
[*] AldioDuracao = 0;
[*] }
[*] }//----------------------------------------------------------------------------------------------------
[*] if (Navgador.BAtacar == true) {/// Atacar ------------------------------------------------------
[*] GetComponent<Animator> ().SetBool ("Atacar", true);
[*] GetComponent<AudioSource> ().clip = Atacar;
[*] GetComponent<AudioSource> ().PlayOneShot (Atacar);
[*] } else {
[*] GetComponent<Animator> ().SetBool ("Atacar", false);
[*] }//----------------------------------------------------------------------------------------------------
[*] if (Navgador.BOlhar == true) {/// Olhar ------------------------------------------------------
[*] GetComponent<Animator> ().SetBool ("Olhar", true);
[*] if (GetComponent<AudioSource> ().clip != Olhar) {
[*] AldioTocando = false;
[*] AldioDuracao = 0;
[*] Debug.Log ("Aldio Trocado");
[*] }
[*] if (AldioTocando == false) {
[*] GetComponent<AudioSource> ().clip = Olhar;
[*] GetComponent<AudioSource> ().PlayOneShot (Olhar);
[*] AldioTocando = true;
[*] }
[*] } else {
[*] GetComponent<Animator> ().SetBool ("Olhar", false);
[*] }//----------------------------------------------------------------------------------------------------
[*] if (Navgador.BPassear == true) {/// Passear ------------------------------------------------------
[*] GetComponent<Animator> ().SetBool ("Passear", true);
[*] if (GetComponent<AudioSource> ().clip != Passear) {
[*] AldioTocando = false;
[*] AldioDuracao = 0;
[*] Debug.Log ("Aldio Trocado");
[*] }
[*] if (AldioTocando == false) {
[*] GetComponent<AudioSource> ().clip = Passear;
[*] GetComponent<AudioSource> ().PlayOneShot (Passear);
[*] AldioTocando = true;
[*] }
[*] } else {
[*] GetComponent<Animator> ().SetBool ("Passear", false);
[*] }//----------------------------------------------------------------------------------------------------
[*] if (Navgador.BPerseguir == true) { /// perseguir ------------------------------------------------------
[*] GetComponent<Animator> ().SetBool ("Perseguir", true);
[*] if (GetComponent<AudioSource> ().clip != Perseguir) {
[*] AldioTocando = false;
[*] AldioDuracao = 0;
[*] Debug.Log ("Aldio Trocado");
[*] }
[*] if (AldioTocando == false) {
[*] GetComponent<AudioSource> ().clip = Perseguir;
[*] GetComponent<AudioSource> ().PlayOneShot (Perseguir);
[*] AldioTocando = true;
[*] }
[*] } else {
[*] GetComponent<Animator> ().SetBool ("Perseguir", false);
[*] }//----------------------------------------------------------------------------------------------------
[*] }
[*]}
[/list]
AmazingDeliciano- Membro
- PONTOS : 1772
REPUTAÇÃO : 3
Respeito as regras :
Re: [AJUDA] NavMesh bugado
[list=linenums]
[*]using UnityEngine;
[*]using System.Collections;
[*][RequireComponent(typeof(Animator))]
[*][RequireComponent(typeof(AudioSource))]
[*]public class AninINTELIGENCIA : MonoBehaviour {
[*] public INTELIGENCIA2 Navgador;
[*] public AudioClip Atacar, Olhar, Passear, Perseguir;
[*] public bool AldioTocando;
[*] public float AldioDuracao;
[*] // Use this for initialization
[*] void Start () {
[*] }
[*] // Update is called once per frame
[*] void Update () {
[*] if (AldioTocando == true) {/// AldioTocando ------------------------------------------------------
[*] AldioDuracao += Time.deltaTime;
[*] if (AldioDuracao >= GetComponent<AudioSource> ().clip.length ) {
[*] AldioTocando = false;
[*] AldioDuracao = 0;
[*] }
[*] }//----------------------------------------------------------------------------------------------------
[*] if (Navgador.BAtacar == true) {/// Atacar ------------------------------------------------------
[*] GetComponent<Animator> ().SetBool ("Atacar", true);
[*] GetComponent<AudioSource> ().clip = Atacar;
[*] GetComponent<AudioSource> ().PlayOneShot (Atacar);
[*] } else {
[*] GetComponent<Animator> ().SetBool ("Atacar", false);
[*] }//----------------------------------------------------------------------------------------------------
[*] if (Navgador.BOlhar == true) {/// Olhar ------------------------------------------------------
[*] GetComponent<Animator> ().SetBool ("Olhar", true);
[*] if (GetComponent<AudioSource> ().clip != Olhar) {
[*] AldioTocando = false;
[*] AldioDuracao = 0;
[*] Debug.Log ("Aldio Trocado");
[*] }
[*] if (AldioTocando == false) {
[*] GetComponent<AudioSource> ().clip = Olhar;
[*] GetComponent<AudioSource> ().PlayOneShot (Olhar);
[*] AldioTocando = true;
[*] }
[*] } else {
[*] GetComponent<Animator> ().SetBool ("Olhar", false);
[*] }//----------------------------------------------------------------------------------------------------
[*] if (Navgador.BPassear == true) {/// Passear ------------------------------------------------------
[*] GetComponent<Animator> ().SetBool ("Passear", true);
[*] if (GetComponent<AudioSource> ().clip != Passear) {
[*] AldioTocando = false;
[*] AldioDuracao = 0;
[*] Debug.Log ("Aldio Trocado");
[*] }
[*] if (AldioTocando == false) {
[*] GetComponent<AudioSource> ().clip = Passear;
[*] GetComponent<AudioSource> ().PlayOneShot (Passear);
[*] AldioTocando = true;
[*] }
[*] } else {
[*] GetComponent<Animator> ().SetBool ("Passear", false);
[*] }//----------------------------------------------------------------------------------------------------
[*] if (Navgador.BPerseguir == true) { /// perseguir ------------------------------------------------------
[*] GetComponent<Animator> ().SetBool ("Perseguir", true);
[*] if (GetComponent<AudioSource> ().clip != Perseguir) {
[*] AldioTocando = false;
[*] AldioDuracao = 0;
[*] Debug.Log ("Aldio Trocado");
[*] }
[*] if (AldioTocando == false) {
[*] GetComponent<AudioSource> ().clip = Perseguir;
[*] GetComponent<AudioSource> ().PlayOneShot (Perseguir);
[*] AldioTocando = true;
[*] }
[*] } else {
[*] GetComponent<Animator> ().SetBool ("Perseguir", false);
[*] }//----------------------------------------------------------------------------------------------------
[*] }
[*]}
[/list]
[*]using UnityEngine;
[*]using System.Collections;
[*][RequireComponent(typeof(Animator))]
[*][RequireComponent(typeof(AudioSource))]
[*]public class AninINTELIGENCIA : MonoBehaviour {
[*] public INTELIGENCIA2 Navgador;
[*] public AudioClip Atacar, Olhar, Passear, Perseguir;
[*] public bool AldioTocando;
[*] public float AldioDuracao;
[*] // Use this for initialization
[*] void Start () {
[*] }
[*] // Update is called once per frame
[*] void Update () {
[*] if (AldioTocando == true) {/// AldioTocando ------------------------------------------------------
[*] AldioDuracao += Time.deltaTime;
[*] if (AldioDuracao >= GetComponent<AudioSource> ().clip.length ) {
[*] AldioTocando = false;
[*] AldioDuracao = 0;
[*] }
[*] }//----------------------------------------------------------------------------------------------------
[*] if (Navgador.BAtacar == true) {/// Atacar ------------------------------------------------------
[*] GetComponent<Animator> ().SetBool ("Atacar", true);
[*] GetComponent<AudioSource> ().clip = Atacar;
[*] GetComponent<AudioSource> ().PlayOneShot (Atacar);
[*] } else {
[*] GetComponent<Animator> ().SetBool ("Atacar", false);
[*] }//----------------------------------------------------------------------------------------------------
[*] if (Navgador.BOlhar == true) {/// Olhar ------------------------------------------------------
[*] GetComponent<Animator> ().SetBool ("Olhar", true);
[*] if (GetComponent<AudioSource> ().clip != Olhar) {
[*] AldioTocando = false;
[*] AldioDuracao = 0;
[*] Debug.Log ("Aldio Trocado");
[*] }
[*] if (AldioTocando == false) {
[*] GetComponent<AudioSource> ().clip = Olhar;
[*] GetComponent<AudioSource> ().PlayOneShot (Olhar);
[*] AldioTocando = true;
[*] }
[*] } else {
[*] GetComponent<Animator> ().SetBool ("Olhar", false);
[*] }//----------------------------------------------------------------------------------------------------
[*] if (Navgador.BPassear == true) {/// Passear ------------------------------------------------------
[*] GetComponent<Animator> ().SetBool ("Passear", true);
[*] if (GetComponent<AudioSource> ().clip != Passear) {
[*] AldioTocando = false;
[*] AldioDuracao = 0;
[*] Debug.Log ("Aldio Trocado");
[*] }
[*] if (AldioTocando == false) {
[*] GetComponent<AudioSource> ().clip = Passear;
[*] GetComponent<AudioSource> ().PlayOneShot (Passear);
[*] AldioTocando = true;
[*] }
[*] } else {
[*] GetComponent<Animator> ().SetBool ("Passear", false);
[*] }//----------------------------------------------------------------------------------------------------
[*] if (Navgador.BPerseguir == true) { /// perseguir ------------------------------------------------------
[*] GetComponent<Animator> ().SetBool ("Perseguir", true);
[*] if (GetComponent<AudioSource> ().clip != Perseguir) {
[*] AldioTocando = false;
[*] AldioDuracao = 0;
[*] Debug.Log ("Aldio Trocado");
[*] }
[*] if (AldioTocando == false) {
[*] GetComponent<AudioSource> ().clip = Perseguir;
[*] GetComponent<AudioSource> ().PlayOneShot (Perseguir);
[*] AldioTocando = true;
[*] }
[*] } else {
[*] GetComponent<Animator> ().SetBool ("Perseguir", false);
[*] }//----------------------------------------------------------------------------------------------------
[*] }
[*]}
[/list]
AmazingDeliciano- Membro
- PONTOS : 1772
REPUTAÇÃO : 3
Respeito as regras :
Re: [AJUDA] NavMesh bugado
[list=linenums]
[*]using UnityEngine;
[*]using System.Collections;
[*]public class INTELIGENCIA2 : MonoBehaviour {
[*] public Transform Player;
[*] private NavMeshAgent naveMesh;
[*] public float DistanciaDoPlayer, DistanciaDoAIPoint;
[*] public float DistanciaDePercepcao = 30,DistanciaDeSeguir = 20, DistanciaDeAtacar = 2, VelocidadeDePasseio = 3, VelocidadeDePerseguicao = 6,TempoPorAtaque = 1.5f, DanoDoInimigo = 40;
[*] private bool VendoOPlayer;
[*] public Transform[] DestinosAleatorios;
[*] private int AIPointAtual;
[*] private bool PerseguindoAlgo, contadorPerseguindoAlgo,atacandoAlgo,contadorOlhar ;
[*] private float cronometroDaPerseguicao,cronometroAtaque, cronometroOlhar;
[*] public bool BPassear, BOlhar, BPerseguir, BAtacar;
[*] void Start (){
[*] AIPointAtual = Random.Range (0, DestinosAleatorios.Length);
[*] naveMesh = transform.GetComponent<NavMeshAgent> ();
[*] }
[*] void Update (){
[*] DistanciaDoPlayer = Vector3.Distance(Player.transform.position,transform.position);
[*] DistanciaDoAIPoint = Vector3.Distance(DestinosAleatorios[AIPointAtual].transform.position,transform.position);
[*] //============================== RAYCAST ===================================//
[*] RaycastHit hit;
[*] Vector3 deOnde = transform.position;
[*] Vector3 paraOnde = Player.transform.position;
[*] Vector3 direction = paraOnde - deOnde;
[*] if(Physics.Raycast (transform.position,direction,out hit,1000) && DistanciaDoPlayer < DistanciaDePercepcao ){
[*] if(hit.collider.gameObject.CompareTag("Player")){
[*] VendoOPlayer = true;
[*] }else{
[*] VendoOPlayer = false;
[*] }
[*] }
[*] //================ CHECHAGENS E DECISOES DO INIMIGO ================//
[*] if(DistanciaDoPlayer > DistanciaDePercepcao && cronometroOlhar < 5){
[*] PerseguindoAlgo = false;
[*] BPassear = true;
[*] Passear();
[*] }
[*] if (DistanciaDoPlayer <= DistanciaDePercepcao && DistanciaDoPlayer > DistanciaDeSeguir && cronometroOlhar < 5) {
[*] if(VendoOPlayer == true){
[*] BOlhar = true;
[*] Olhar ();
[*] }else{
[*] BPassear = true;
[*] Passear();
[*] }
[*] }
[*] if (DistanciaDoPlayer <= DistanciaDeSeguir && DistanciaDoPlayer > DistanciaDeAtacar ) {
[*] if(VendoOPlayer == true){
[*] BPerseguir = true;
[*] Perseguir();
[*] PerseguindoAlgo = true;
[*] }else{
[*] BPassear = true;
[*] Passear();
[*] }
[*] }
[*] if (DistanciaDoPlayer <= DistanciaDeAtacar ) {
[*] BAtacar = true;
[*] Atacar();
[*] }
[*] //COMANDOS DE PASSEAR
[*] if (DistanciaDoAIPoint <= 2) {
[*] AIPointAtual = Random.Range (0, DestinosAleatorios.Length);
[*] BPassear = true;
[*] Passear();
[*] }
[*] //CONTADORES DE OLHAR
[*] if (contadorOlhar == true) {
[*] cronometroOlhar += Time.deltaTime;
[*] }
[*] if (cronometroOlhar >= 5 ) {
[*] Perseguir();
[*] }
[*] if (cronometroOlhar >= 8 ) {
[*] contadorOlhar = false;
[*] cronometroOlhar = 0;
[*] Perseguir();
[*] }
[*] //CONTADORES DE PERSEGUICAO
[*] if (contadorPerseguindoAlgo == true) {
[*] cronometroDaPerseguicao += Time.deltaTime;
[*] }
[*] if (cronometroDaPerseguicao >= 5 && VendoOPlayer == false) {
[*] contadorPerseguindoAlgo = false;
[*] cronometroDaPerseguicao = 0;
[*] PerseguindoAlgo = false;
[*] }
[*] // Freio do ATAQUE
[*] if (DistanciaDoPlayer <= DistanciaDeAtacar - 1) {
[*] naveMesh.destination = gameObject.transform.position;
[*] }
[*] // CONTADOR DE ATAQUE
[*] if (atacandoAlgo == true) {
[*] transform.LookAt (new Vector3 (Player.transform.position.x, transform.position.y, Player.transform.position.z));
[*] cronometroAtaque += Time.deltaTime;
[*] }
[*] if (cronometroAtaque >= TempoPorAtaque && DistanciaDoPlayer <= DistanciaDeAtacar) {
[*] atacandoAlgo = true;
[*] cronometroAtaque = 0;
[*] //PLAYER.VIDA = PLAYER.VIDA - DanoDoInimigo;
[*] Debug.Log ("recebeuAtaque");
[*] } else if (cronometroAtaque >= TempoPorAtaque && DistanciaDoPlayer > DistanciaDeAtacar) {
[*] atacandoAlgo = false;
[*] cronometroAtaque = 0;
[*] Debug.Log ("errou");
[*] }
[*] }
[*] void Passear (){
[*] BOlhar = false;
[*] BPerseguir = false;
[*] BAtacar = false;
[*] if (PerseguindoAlgo == false) {
[*] naveMesh.acceleration = 5;
[*] naveMesh.speed = VelocidadeDePasseio;
[*] naveMesh.destination = DestinosAleatorios [AIPointAtual].position;
[*] } else if (PerseguindoAlgo == true) {
[*] contadorPerseguindoAlgo = true;
[*] }
[*] }
[*] void Olhar(){
[*] contadorOlhar = true;
[*] BPassear = false;
[*] BPerseguir = false;
[*] BAtacar = false;
[*] naveMesh.speed = 0;
[*] transform.LookAt (Player);
[*] }
[*] void Perseguir(){
[*] BPassear = false;
[*] BOlhar = false;
[*] BAtacar = false;
[*] naveMesh.acceleration = 8;
[*] naveMesh.speed = VelocidadeDePerseguicao;
[*] naveMesh.destination = Player.position;
[*] }
[*] void Atacar (){
[*] BPassear = false;
[*] BOlhar = false;
[*] BPerseguir = false;
[*] atacandoAlgo = true;
[*] }
[*]}
[/list]
[*]using UnityEngine;
[*]using System.Collections;
[*]public class INTELIGENCIA2 : MonoBehaviour {
[*] public Transform Player;
[*] private NavMeshAgent naveMesh;
[*] public float DistanciaDoPlayer, DistanciaDoAIPoint;
[*] public float DistanciaDePercepcao = 30,DistanciaDeSeguir = 20, DistanciaDeAtacar = 2, VelocidadeDePasseio = 3, VelocidadeDePerseguicao = 6,TempoPorAtaque = 1.5f, DanoDoInimigo = 40;
[*] private bool VendoOPlayer;
[*] public Transform[] DestinosAleatorios;
[*] private int AIPointAtual;
[*] private bool PerseguindoAlgo, contadorPerseguindoAlgo,atacandoAlgo,contadorOlhar ;
[*] private float cronometroDaPerseguicao,cronometroAtaque, cronometroOlhar;
[*] public bool BPassear, BOlhar, BPerseguir, BAtacar;
[*] void Start (){
[*] AIPointAtual = Random.Range (0, DestinosAleatorios.Length);
[*] naveMesh = transform.GetComponent<NavMeshAgent> ();
[*] }
[*] void Update (){
[*] DistanciaDoPlayer = Vector3.Distance(Player.transform.position,transform.position);
[*] DistanciaDoAIPoint = Vector3.Distance(DestinosAleatorios[AIPointAtual].transform.position,transform.position);
[*] //============================== RAYCAST ===================================//
[*] RaycastHit hit;
[*] Vector3 deOnde = transform.position;
[*] Vector3 paraOnde = Player.transform.position;
[*] Vector3 direction = paraOnde - deOnde;
[*] if(Physics.Raycast (transform.position,direction,out hit,1000) && DistanciaDoPlayer < DistanciaDePercepcao ){
[*] if(hit.collider.gameObject.CompareTag("Player")){
[*] VendoOPlayer = true;
[*] }else{
[*] VendoOPlayer = false;
[*] }
[*] }
[*] //================ CHECHAGENS E DECISOES DO INIMIGO ================//
[*] if(DistanciaDoPlayer > DistanciaDePercepcao && cronometroOlhar < 5){
[*] PerseguindoAlgo = false;
[*] BPassear = true;
[*] Passear();
[*] }
[*] if (DistanciaDoPlayer <= DistanciaDePercepcao && DistanciaDoPlayer > DistanciaDeSeguir && cronometroOlhar < 5) {
[*] if(VendoOPlayer == true){
[*] BOlhar = true;
[*] Olhar ();
[*] }else{
[*] BPassear = true;
[*] Passear();
[*] }
[*] }
[*] if (DistanciaDoPlayer <= DistanciaDeSeguir && DistanciaDoPlayer > DistanciaDeAtacar ) {
[*] if(VendoOPlayer == true){
[*] BPerseguir = true;
[*] Perseguir();
[*] PerseguindoAlgo = true;
[*] }else{
[*] BPassear = true;
[*] Passear();
[*] }
[*] }
[*] if (DistanciaDoPlayer <= DistanciaDeAtacar ) {
[*] BAtacar = true;
[*] Atacar();
[*] }
[*] //COMANDOS DE PASSEAR
[*] if (DistanciaDoAIPoint <= 2) {
[*] AIPointAtual = Random.Range (0, DestinosAleatorios.Length);
[*] BPassear = true;
[*] Passear();
[*] }
[*] //CONTADORES DE OLHAR
[*] if (contadorOlhar == true) {
[*] cronometroOlhar += Time.deltaTime;
[*] }
[*] if (cronometroOlhar >= 5 ) {
[*] Perseguir();
[*] }
[*] if (cronometroOlhar >= 8 ) {
[*] contadorOlhar = false;
[*] cronometroOlhar = 0;
[*] Perseguir();
[*] }
[*] //CONTADORES DE PERSEGUICAO
[*] if (contadorPerseguindoAlgo == true) {
[*] cronometroDaPerseguicao += Time.deltaTime;
[*] }
[*] if (cronometroDaPerseguicao >= 5 && VendoOPlayer == false) {
[*] contadorPerseguindoAlgo = false;
[*] cronometroDaPerseguicao = 0;
[*] PerseguindoAlgo = false;
[*] }
[*] // Freio do ATAQUE
[*] if (DistanciaDoPlayer <= DistanciaDeAtacar - 1) {
[*] naveMesh.destination = gameObject.transform.position;
[*] }
[*] // CONTADOR DE ATAQUE
[*] if (atacandoAlgo == true) {
[*] transform.LookAt (new Vector3 (Player.transform.position.x, transform.position.y, Player.transform.position.z));
[*] cronometroAtaque += Time.deltaTime;
[*] }
[*] if (cronometroAtaque >= TempoPorAtaque && DistanciaDoPlayer <= DistanciaDeAtacar) {
[*] atacandoAlgo = true;
[*] cronometroAtaque = 0;
[*] //PLAYER.VIDA = PLAYER.VIDA - DanoDoInimigo;
[*] Debug.Log ("recebeuAtaque");
[*] } else if (cronometroAtaque >= TempoPorAtaque && DistanciaDoPlayer > DistanciaDeAtacar) {
[*] atacandoAlgo = false;
[*] cronometroAtaque = 0;
[*] Debug.Log ("errou");
[*] }
[*] }
[*] void Passear (){
[*] BOlhar = false;
[*] BPerseguir = false;
[*] BAtacar = false;
[*] if (PerseguindoAlgo == false) {
[*] naveMesh.acceleration = 5;
[*] naveMesh.speed = VelocidadeDePasseio;
[*] naveMesh.destination = DestinosAleatorios [AIPointAtual].position;
[*] } else if (PerseguindoAlgo == true) {
[*] contadorPerseguindoAlgo = true;
[*] }
[*] }
[*] void Olhar(){
[*] contadorOlhar = true;
[*] BPassear = false;
[*] BPerseguir = false;
[*] BAtacar = false;
[*] naveMesh.speed = 0;
[*] transform.LookAt (Player);
[*] }
[*] void Perseguir(){
[*] BPassear = false;
[*] BOlhar = false;
[*] BAtacar = false;
[*] naveMesh.acceleration = 8;
[*] naveMesh.speed = VelocidadeDePerseguicao;
[*] naveMesh.destination = Player.position;
[*] }
[*] void Atacar (){
[*] BPassear = false;
[*] BOlhar = false;
[*] BPerseguir = false;
[*] atacandoAlgo = true;
[*] }
[*]}
[/list]
AmazingDeliciano- Membro
- PONTOS : 1772
REPUTAÇÃO : 3
Respeito as regras :
Tópicos semelhantes
» (Ajuda) OnCossionEnter Bugado
» Cronometro 3,2,1 fica bugado ajuda aee...
» Ajuda com Ragdoll (Ta muito bugado)!!!
» (Ajuda) NavMesh erro.
» AJuda Inimigo seguir o Player sem NavMesh
» Cronometro 3,2,1 fica bugado ajuda aee...
» Ajuda com Ragdoll (Ta muito bugado)!!!
» (Ajuda) NavMesh erro.
» AJuda Inimigo seguir o Player sem NavMesh
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos