Inimigo pular por obstáculos
3 participantes
Página 1 de 1
Inimigo pular por obstáculos
Eu uso um script para fazer o inimigo me seguir, porem eu gostaria de quando ele está me seguindo ele pule algum obstáculos, porem ele não faz isso!!! Como faço para que isso aconteça??
Edivandro2706- Avançado
- PONTOS : 2089
REPUTAÇÃO : 4
Respeito as regras :
Re: Inimigo pular por obstáculos
Edivandro2706 escreveu:Eu uso um script para fazer o inimigo me seguir, porem eu gostaria de quando ele está me seguindo ele pule algum obstáculos, porem ele não faz isso!!! Como faço para que isso aconteça??
Precisamos do seu código para ter nexo de como você está fazendo este sistema para quê, assim, possamos dar algum apoio significativo.
Antônio T- ProgramadorMaster
- PONTOS : 1848
REPUTAÇÃO : 21
Idade : 23
Áreas de atuação : C# (.NET Framework, Unity), Linguagens Web (Electron) e Lua (TIC 80, Löve 2D); Pixel Arte (Aseprite)
Respeito as regras :
Re: Inimigo pular por obstáculos
Esse é o script que faz o movimento do inimigo, porem não sei como faço para que o personagem pule obstáculos. Será que tem que modificar o script ou é alguma outra coisa que não seja o script?
- Código:
using UnityEngine;
using System.Collections;
using UnityEngine.AI;
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;
}
}
Edivandro2706- Avançado
- PONTOS : 2089
REPUTAÇÃO : 4
Respeito as regras :
Re: Inimigo pular por obstáculos
Acho que o que você procura é o Off Mesh Link
Tem muitos outros tutoriais além desse no youtube
Tem muitos outros tutoriais além desse no youtube
JohnRambo- Moderador
- PONTOS : 5172
REPUTAÇÃO : 661
Idade : 24
Áreas de atuação : Unity;
Programação;
Música e Sonorização;
Graduado em Análise e Desenvolvimento de Sistemas;
Respeito as regras :
Tópicos semelhantes
» queria aprender a fazer O inimigo subir uma parede (pular pro outro lado)
» Script de health de inimigo sendo acessado mesmo sem acerta o inimigo
» Problemas com a queda do Player de Obstáculos 2D
» Obstaculos aleatorios
» Gerador infinito de Obstaculos 2D
» Script de health de inimigo sendo acessado mesmo sem acerta o inimigo
» Problemas com a queda do Player de Obstáculos 2D
» Obstaculos aleatorios
» Gerador infinito de Obstaculos 2D
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos