AI Enemy Ajuda
3 participantes
Página 1 de 1
AI Enemy Ajuda
Galera atualmente vi um vídeo do marcos(AI Enemy para jogos de terror) e deu muita coisa certa porém quando chego perto do inimigo ao invés dele me perseguir eu o persigo, já revisei o codigo diversas vezes, alguem me ajudaaa
Codigo:
Codigo:
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AI;
public class Enemy : MonoBehaviour {
public Transform Player;
private NavMeshAgent navmesh;
private float playerDistance, DistaceAIPOINT;
public float DistancePercepcao = 30, DistanceSeguir =20, DistanceAtacar = 2, VelociPasseio = 3, VelociPerseguir = 6, TempoAtaque = 1.5f, Danoinimigo = 100;
private bool VendoPlayer;
public Transform[] DestinosAleatory;
private int AIpoitAtual;
private bool PersiguindoAlgo, ContadorPerseguindoAlgo,AtacandoAlgo;
private float CronometroPersegui, CronometroAtaque;
void Start () {
AIpoitAtual = Random.Range (0, DestinosAleatory.Length);
navmesh = transform.GetComponent<NavMeshAgent> ();
}
void Update () {
playerDistance = Vector3.Distance (Player.transform.position,transform.position);
DistaceAIPOINT = Vector3.Distance (DestinosAleatory [AIpoitAtual].transform.position, transform.position);
//===============================================================================
RaycastHit hit;
Vector3 deOnde = transform.position;
Vector3 paraONDE = Player.transform.position;
Vector3 Direction = paraONDE - deOnde;
if (Physics.Raycast (transform.position, Direction, out hit, 1000) && playerDistance < DistancePercepcao) {
if(hit.collider.gameObject.CompareTag("Player") ){
VendoPlayer = true;
}else{
VendoPlayer = false;
}
}
;
//===============Decisoes do Inimigo==========================================
if (playerDistance > DistancePercepcao) {
Passear();
}
if(playerDistance <= DistancePercepcao && playerDistance > DistanceSeguir){
if(VendoPlayer == true){
Olhar();
}else{
Passear ();
}
}
if (playerDistance <= DistanceSeguir && playerDistance > DistanceAtacar) {
if(VendoPlayer == true){
Perseguir();
PersiguindoAlgo = true;
}else{
Passear();
}
}
if (playerDistance <= DistanceAtacar) {
Atacar ();
}
//==============COMANDOS DE PASSEAR
if (DistaceAIPOINT <= 2) {
AIpoitAtual = Random.Range (0, DestinosAleatory.Length);
Passear ();
}
//================CONTADORES DE PERSSEGUIÇAO====================
if (ContadorPerseguindoAlgo == true) {
CronometroPersegui += Time.deltaTime;
}
if (CronometroPersegui >= 5 && VendoPlayer == false) {
ContadorPerseguindoAlgo = false;
CronometroPersegui =0;
PersiguindoAlgo = false;
}
//cronometro
if (AtacandoAlgo == true) {
CronometroAtaque += Time.deltaTime;
}
if (CronometroAtaque >= TempoAtaque && playerDistance >= DistanceAtacar) {
AtacandoAlgo = true;
CronometroAtaque = 0;
vida.VIDA = vida.VIDA - Danoinimigo;
Debug.Log("recebeu ataque");
} else if (CronometroAtaque >= TempoAtaque && playerDistance >= DistanceAtacar) {
AtacandoAlgo = false;
CronometroAtaque = 0;
Debug.Log("errour");
}
}
void Passear() {
if (PersiguindoAlgo == false) {
navmesh.acceleration = 5;
navmesh.speed = VelociPasseio;
navmesh.destination = DestinosAleatory [AIpoitAtual].position;
} else if (PersiguindoAlgo == true){
ContadorPerseguindoAlgo = true;
}
}
void Olhar(){
navmesh.speed = 0;
transform.LookAt (Player);
}
void Perseguir(){
navmesh.acceleration = 8;
navmesh.speed = VelociPerseguir;
navmesh.destination = Player.position;
}
void Atacar(){
AtacandoAlgo = true;
}
}
Mark1nDeveloper- Iniciante
- PONTOS : 2118
REPUTAÇÃO : 0
Respeito as regras :
Re: AI Enemy Ajuda
Mano me chama no Facebook talvez eu possa te ajudar
https://www.facebook.com/profile.php?id=100010490649346
https://www.facebook.com/profile.php?id=100010490649346
Unidade3d5- Avançado
- PONTOS : 3030
REPUTAÇÃO : 28
Respeito as regras :
Re: AI Enemy Ajuda
Mark1nDeveloper escreveu:Galera atualmente vi um vídeo do marcos(AI Enemy para jogos de terror) e deu muita coisa certa porém quando chego perto do inimigo ao invés dele me perseguir eu o persigo, já revisei o codigo diversas vezes, alguem me ajudaaa
Codigo:
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AI;
public class Enemy : MonoBehaviour {
public Transform Player;
private NavMeshAgent navmesh;
private float playerDistance, DistaceAIPOINT;
public float DistancePercepcao = 30, DistanceSeguir =20, DistanceAtacar = 2, VelociPasseio = 3, VelociPerseguir = 6, TempoAtaque = 1.5f, Danoinimigo = 100;
private bool VendoPlayer;
public Transform[] DestinosAleatory;
private int AIpoitAtual;
private bool PersiguindoAlgo, ContadorPerseguindoAlgo,AtacandoAlgo;
private float CronometroPersegui, CronometroAtaque;
void Start () {
AIpoitAtual = Random.Range (0, DestinosAleatory.Length);
navmesh = transform.GetComponent<NavMeshAgent> ();
}
void Update () {
playerDistance = Vector3.Distance (Player.transform.position,transform.position);
DistaceAIPOINT = Vector3.Distance (DestinosAleatory [AIpoitAtual].transform.position, transform.position);
//===============================================================================
RaycastHit hit;
Vector3 deOnde = transform.position;
Vector3 paraONDE = Player.transform.position;
Vector3 Direction = paraONDE - deOnde;
if (Physics.Raycast (transform.position, Direction, out hit, 1000) && playerDistance < DistancePercepcao) {
if(hit.collider.gameObject.CompareTag("Player") ){
VendoPlayer = true;
}else{
VendoPlayer = false;
}
}
;
//===============Decisoes do Inimigo==========================================
if (playerDistance > DistancePercepcao) {
Passear();
}
if(playerDistance <= DistancePercepcao && playerDistance > DistanceSeguir){
if(VendoPlayer == true){
Olhar();
}else{
Passear ();
}
}
if (playerDistance <= DistanceSeguir && playerDistance > DistanceAtacar) {
if(VendoPlayer == true){
Perseguir();
PersiguindoAlgo = true;
}else{
Passear();
}
}
if (playerDistance <= DistanceAtacar) {
Atacar ();
}
//==============COMANDOS DE PASSEAR
if (DistaceAIPOINT <= 2) {
AIpoitAtual = Random.Range (0, DestinosAleatory.Length);
Passear ();
}
//================CONTADORES DE PERSSEGUIÇAO====================
if (ContadorPerseguindoAlgo == true) {
CronometroPersegui += Time.deltaTime;
}
if (CronometroPersegui >= 5 && VendoPlayer == false) {
ContadorPerseguindoAlgo = false;
CronometroPersegui =0;
PersiguindoAlgo = false;
}
//cronometro
if (AtacandoAlgo == true) {
CronometroAtaque += Time.deltaTime;
}
if (CronometroAtaque >= TempoAtaque && playerDistance >= DistanceAtacar) {
AtacandoAlgo = true;
CronometroAtaque = 0;
vida.VIDA = vida.VIDA - Danoinimigo;
Debug.Log("recebeu ataque");
} else if (CronometroAtaque >= TempoAtaque && playerDistance >= DistanceAtacar) {
AtacandoAlgo = false;
CronometroAtaque = 0;
Debug.Log("errour");
}
}
void Passear() {
if (PersiguindoAlgo == false) {
navmesh.acceleration = 5;
navmesh.speed = VelociPasseio;
navmesh.destination = DestinosAleatory [AIpoitAtual].position;
} else if (PersiguindoAlgo == true){
ContadorPerseguindoAlgo = true;
}
}
void Olhar(){
navmesh.speed = 0;
transform.LookAt (Player);
}
void Perseguir(){
navmesh.acceleration = 8;
navmesh.speed = VelociPerseguir;
navmesh.destination = Player.position;
}
void Atacar(){
AtacandoAlgo = true;
}
}
Verifique as tag estao corretas!
Re: AI Enemy Ajuda
Já resolvi era so ativar o mesh renderer, mas agora to com um problema de atribuir animações para cada ação desse scriptfecirineu escreveu:Mark1nDeveloper escreveu:Galera atualmente vi um vídeo do marcos(AI Enemy para jogos de terror) e deu muita coisa certa porém quando chego perto do inimigo ao invés dele me perseguir eu o persigo, já revisei o codigo diversas vezes, alguem me ajudaaa
Codigo:
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AI;
public class Enemy : MonoBehaviour {
public Transform Player;
private NavMeshAgent navmesh;
private float playerDistance, DistaceAIPOINT;
public float DistancePercepcao = 30, DistanceSeguir =20, DistanceAtacar = 2, VelociPasseio = 3, VelociPerseguir = 6, TempoAtaque = 1.5f, Danoinimigo = 100;
private bool VendoPlayer;
public Transform[] DestinosAleatory;
private int AIpoitAtual;
private bool PersiguindoAlgo, ContadorPerseguindoAlgo,AtacandoAlgo;
private float CronometroPersegui, CronometroAtaque;
void Start () {
AIpoitAtual = Random.Range (0, DestinosAleatory.Length);
navmesh = transform.GetComponent<NavMeshAgent> ();
}
void Update () {
playerDistance = Vector3.Distance (Player.transform.position,transform.position);
DistaceAIPOINT = Vector3.Distance (DestinosAleatory [AIpoitAtual].transform.position, transform.position);
//===============================================================================
RaycastHit hit;
Vector3 deOnde = transform.position;
Vector3 paraONDE = Player.transform.position;
Vector3 Direction = paraONDE - deOnde;
if (Physics.Raycast (transform.position, Direction, out hit, 1000) && playerDistance < DistancePercepcao) {
if(hit.collider.gameObject.CompareTag("Player") ){
VendoPlayer = true;
}else{
VendoPlayer = false;
}
}
;
//===============Decisoes do Inimigo==========================================
if (playerDistance > DistancePercepcao) {
Passear();
}
if(playerDistance <= DistancePercepcao && playerDistance > DistanceSeguir){
if(VendoPlayer == true){
Olhar();
}else{
Passear ();
}
}
if (playerDistance <= DistanceSeguir && playerDistance > DistanceAtacar) {
if(VendoPlayer == true){
Perseguir();
PersiguindoAlgo = true;
}else{
Passear();
}
}
if (playerDistance <= DistanceAtacar) {
Atacar ();
}
//==============COMANDOS DE PASSEAR
if (DistaceAIPOINT <= 2) {
AIpoitAtual = Random.Range (0, DestinosAleatory.Length);
Passear ();
}
//================CONTADORES DE PERSSEGUIÇAO====================
if (ContadorPerseguindoAlgo == true) {
CronometroPersegui += Time.deltaTime;
}
if (CronometroPersegui >= 5 && VendoPlayer == false) {
ContadorPerseguindoAlgo = false;
CronometroPersegui =0;
PersiguindoAlgo = false;
}
//cronometro
if (AtacandoAlgo == true) {
CronometroAtaque += Time.deltaTime;
}
if (CronometroAtaque >= TempoAtaque && playerDistance >= DistanceAtacar) {
AtacandoAlgo = true;
CronometroAtaque = 0;
vida.VIDA = vida.VIDA - Danoinimigo;
Debug.Log("recebeu ataque");
} else if (CronometroAtaque >= TempoAtaque && playerDistance >= DistanceAtacar) {
AtacandoAlgo = false;
CronometroAtaque = 0;
Debug.Log("errour");
}
}
void Passear() {
if (PersiguindoAlgo == false) {
navmesh.acceleration = 5;
navmesh.speed = VelociPasseio;
navmesh.destination = DestinosAleatory [AIpoitAtual].position;
} else if (PersiguindoAlgo == true){
ContadorPerseguindoAlgo = true;
}
}
void Olhar(){
navmesh.speed = 0;
transform.LookAt (Player);
}
void Perseguir(){
navmesh.acceleration = 8;
navmesh.speed = VelociPerseguir;
navmesh.destination = Player.position;
}
void Atacar(){
AtacandoAlgo = true;
}
}
Verifique as tag estao corretas!
Mark1nDeveloper- Iniciante
- PONTOS : 2118
REPUTAÇÃO : 0
Respeito as regras :
Tópicos semelhantes
» Ajuda Enemy AI
» Enemy IA 1x1 movement!?
» erro AI Enemy
» Problemas com a AI/ENEMY
» Enemy grid movement
» Enemy IA 1x1 movement!?
» erro AI Enemy
» Problemas com a AI/ENEMY
» Enemy grid movement
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos