[TUTORIAL] AI Enemy ( Jogos de terror )
Página 1 de 3 • Compartilhe •
Página 1 de 3 • 1, 2, 3
[TUTORIAL] AI Enemy ( Jogos de terror )
Vídeo tutorial:
Script do inimigo:
Script do Player:
Script do inimigo:
- Código:
using UnityEngine;
using System.Collections;
public class INTELIGENCIA : MonoBehaviour {
public Transform Player;
private NavMeshAgent naveMesh;
private 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;
private float cronometroDaPerseguicao,cronometroAtaque;
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){
Passear();
}
if (DistanciaDoPlayer <= DistanciaDePercepcao && DistanciaDoPlayer > DistanciaDeSeguir) {
if(VendoOPlayer == true){
Olhar ();
}else{
Passear();
}
}
if (DistanciaDoPlayer <= DistanciaDeSeguir && DistanciaDoPlayer > DistanciaDeAtacar) {
if(VendoOPlayer == true){
Perseguir();
PerseguindoAlgo = true;
}else{
Passear();
}
}
if (DistanciaDoPlayer <= DistanciaDeAtacar) {
Atacar();
}
//COMANDOS DE PASSEAR
if (DistanciaDoAIPoint <= 2) {
AIPointAtual = Random.Range (0, DestinosAleatorios.Length);
Passear();
}
//CONTADORES DE PERSEGUICAO
if (contadorPerseguindoAlgo == true) {
cronometroDaPerseguicao += Time.deltaTime;
}
if (cronometroDaPerseguicao >= 5 && VendoOPlayer == false) {
contadorPerseguindoAlgo = false;
cronometroDaPerseguicao = 0;
PerseguindoAlgo = false;
}
// CONTADOR DE ATAQUE
if (atacandoAlgo == true) {
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 (){
if (PerseguindoAlgo == false) {
naveMesh.acceleration = 5;
naveMesh.speed = VelocidadeDePasseio;
naveMesh.destination = DestinosAleatorios [AIPointAtual].position;
} else if (PerseguindoAlgo == true) {
contadorPerseguindoAlgo = true;
}
}
void Olhar(){
naveMesh.speed = 0;
transform.LookAt (Player);
}
void Perseguir(){
naveMesh.acceleration = 8;
naveMesh.speed = VelocidadeDePerseguicao;
naveMesh.destination = Player.position;
}
void Atacar (){
atacandoAlgo = true;
}
}
Script do Player:
- Código:
using UnityEngine;
using System.Collections;
public class PLAYER : MonoBehaviour {
public static float VIDA = 100;
void Update (){
if (VIDA <= 0) {
Debug.Log ("morreu");
}
}
}
Última edição por MarcosSchultz em Ter Jun 07, 2016 8:47 pm, editado 1 vez(es)
MarcosSchultz- Administrador
-
PONTOS : 61440
REPUTAÇÃO : 2154
Idade : 22
Áreas de atuação : Administrador do fórum
Respeito as regras :
Re: [TUTORIAL] AI Enemy ( Jogos de terror )
O meu deu esse erro:
- Código:
MissingComponentException: There is no 'NavMeshAgent' attached to the "LION" game object, but a script is trying to access it.
You probably need to add a NavMeshAgent to the game object "LION". Or your script needs to check if the component is attached before using it.
AIPOINTS.Passear () (at Assets/Scripts/AIPOINTS.cs:85)
AIPOINTS.Update () (at Assets/Scripts/AIPOINTS.cs:34)
Lucas Garcia Frade- Avançado
-
PONTOS : 1680
REPUTAÇÃO : 9
Idade : 17
Respeito as regras :
Re: [TUTORIAL] AI Enemy ( Jogos de terror )
esse aqui tem que assistir o vídeo, não é só jogar o script no objeto...
eu utilizei navMesh para fazer o Pafinding
eu utilizei navMesh para fazer o Pafinding
MarcosSchultz- Administrador
-
PONTOS : 61440
REPUTAÇÃO : 2154
Idade : 22
Áreas de atuação : Administrador do fórum
Respeito as regras :
Re: [TUTORIAL] AI Enemy ( Jogos de terror )
Que parte mais ou menos ta isso???
Lucas Garcia Frade- Avançado
-
PONTOS : 1680
REPUTAÇÃO : 9
Idade : 17
Respeito as regras :
Re: [TUTORIAL] AI Enemy ( Jogos de terror )

O que esta errado???
Lucas Garcia Frade- Avançado
-
PONTOS : 1680
REPUTAÇÃO : 9
Idade : 17
Respeito as regras :
Re: [TUTORIAL] AI Enemy ( Jogos de terror )
O player está com tag?
MarcosSchultz- Administrador
-
PONTOS : 61440
REPUTAÇÃO : 2154
Idade : 22
Áreas de atuação : Administrador do fórum
Respeito as regras :
Re: [TUTORIAL] AI Enemy ( Jogos de terror )
Da mais uma olhada na imagem pra ver se fiz algo errado
Lucas Garcia Frade- Avançado
-
PONTOS : 1680
REPUTAÇÃO : 9
Idade : 17
Respeito as regras :
Re: [TUTORIAL] AI Enemy ( Jogos de terror )
Ta falando que o navMesh nao tem um destination
Lucas Garcia Frade- Avançado
-
PONTOS : 1680
REPUTAÇÃO : 9
Idade : 17
Respeito as regras :
Re: [TUTORIAL] AI Enemy ( Jogos de terror )
Bom, vou precisar que você faça 2 coisas...
primeira: retire o BoxCollider do inimigo... a navMesh já traz um colisor consigo.
segundo: mande-me as linhas em que o erro está apontando no script
primeira: retire o BoxCollider do inimigo... a navMesh já traz um colisor consigo.
segundo: mande-me as linhas em que o erro está apontando no script
MarcosSchultz- Administrador
-
PONTOS : 61440
REPUTAÇÃO : 2154
Idade : 22
Áreas de atuação : Administrador do fórum
Respeito as regras :
Re: [TUTORIAL] AI Enemy ( Jogos de terror )


Linha 34, 87 e 99.
Lucas Garcia Frade- Avançado
-
PONTOS : 1680
REPUTAÇÃO : 9
Idade : 17
Respeito as regras :
Re: [TUTORIAL] AI Enemy ( Jogos de terror )
Ein??? O que esta errado???
Lucas Garcia Frade- Avançado
-
PONTOS : 1680
REPUTAÇÃO : 9
Idade : 17
Respeito as regras :
Re: [TUTORIAL] AI Enemy ( Jogos de terror )
Terá que zipar o projeto e me mandar...
é provavel que seu Player não seja um Transform ou não esteja sendo detectado pelo script talvez por causa da Tag...
é provavel que seu Player não seja um Transform ou não esteja sendo detectado pelo script talvez por causa da Tag...
MarcosSchultz- Administrador
-
PONTOS : 61440
REPUTAÇÃO : 2154
Idade : 22
Áreas de atuação : Administrador do fórum
Respeito as regras :
Re: [TUTORIAL] AI Enemy ( Jogos de terror )
Ok, amanha te mando...
Lucas Garcia Frade- Avançado
-
PONTOS : 1680
REPUTAÇÃO : 9
Idade : 17
Respeito as regras :
Re: [TUTORIAL] AI Enemy ( Jogos de terror )
Como te mando?
O Zipado tem 455 MB.

O Zipado tem 455 MB.

Lucas Garcia Frade- Avançado
-
PONTOS : 1680
REPUTAÇÃO : 9
Idade : 17
Respeito as regras :
Re: [TUTORIAL] AI Enemy ( Jogos de terror )
upa no mediafire, MEGA ou 4 shared
MarcosSchultz- Administrador
-
PONTOS : 61440
REPUTAÇÃO : 2154
Idade : 22
Áreas de atuação : Administrador do fórum
Respeito as regras :
Re: [TUTORIAL] AI Enemy ( Jogos de terror )
Deixei no seu facebook, depois que ver me responder por aki mesmo
Lucas Garcia Frade- Avançado
-
PONTOS : 1680
REPUTAÇÃO : 9
Idade : 17
Respeito as regras :
Re: [TUTORIAL] AI Enemy ( Jogos de terror )
Tem que executar e chegar perto do inimigo pro erro aparecer ta
Lucas Garcia Frade- Avançado
-
PONTOS : 1680
REPUTAÇÃO : 9
Idade : 17
Respeito as regras :
Re: [TUTORIAL] AI Enemy ( Jogos de terror )
Assista o vídeo completo... você não deu bake no cenário
tem que selecionar os objetos estaticos e marca-los como estaticos na aba " navegation " e depois Dar um Bake para ele gerar a mesh...
Aqui tem um tutorial curto mostrando como usar o NavMesh
http://www.schultzgames.com/t102-tutorial-como-usar-navemesh-para-inimigos-desviarem-de-obstaculos
tem que selecionar os objetos estaticos e marca-los como estaticos na aba " navegation " e depois Dar um Bake para ele gerar a mesh...
Aqui tem um tutorial curto mostrando como usar o NavMesh
http://www.schultzgames.com/t102-tutorial-como-usar-navemesh-para-inimigos-desviarem-de-obstaculos
MarcosSchultz- Administrador
-
PONTOS : 61440
REPUTAÇÃO : 2154
Idade : 22
Áreas de atuação : Administrador do fórum
Respeito as regras :
Re: [TUTORIAL] AI Enemy ( Jogos de terror )
Deu certo, vlw, pode me explicar como eu coloco uma animação pra quando o inimigo andar ele fazer um movimento com as pernas
Lucas Garcia Frade- Avançado
-
PONTOS : 1680
REPUTAÇÃO : 9
Idade : 17
Respeito as regras :
Re: [TUTORIAL] AI Enemy ( Jogos de terror )
tem como eu usar esse metodo no meu inimigo pq aquele do inimigo ver e me seguir não esta dando certo no terreno ?
eduardo9715- Membro
- PONTOS : 1427
REPUTAÇÃO : 0
Respeito as regras :
Re: [TUTORIAL] AI Enemy ( Jogos de terror )
Cada inimigo requer uma AI meio especifica...
aquela eu elaborei para javaScript, é pra ser uma AI do SCP-Containment Breach
essa AI desse tópico é para um jogo de terror onde o inimigo te ve, e se você se aproximar demais dele, ele te segue... e por ai vai.
as AI's tem que ser elaboradas para situações especificas
aquela eu elaborei para javaScript, é pra ser uma AI do SCP-Containment Breach
essa AI desse tópico é para um jogo de terror onde o inimigo te ve, e se você se aproximar demais dele, ele te segue... e por ai vai.
as AI's tem que ser elaboradas para situações especificas
MarcosSchultz- Administrador
-
PONTOS : 61440
REPUTAÇÃO : 2154
Idade : 22
Áreas de atuação : Administrador do fórum
Respeito as regras :
Re: [TUTORIAL] AI Enemy ( Jogos de terror )
mas tem como eu fazer essa de terror no terrain sem plane ou cube ?
eduardo9715- Membro
- PONTOS : 1427
REPUTAÇÃO : 0
Respeito as regras :
Re: [TUTORIAL] AI Enemy ( Jogos de terror )
basta utilizar NavMesh e mapear o terreno
MarcosSchultz- Administrador
-
PONTOS : 61440
REPUTAÇÃO : 2154
Idade : 22
Áreas de atuação : Administrador do fórum
Respeito as regras :
Re: [TUTORIAL] AI Enemy ( Jogos de terror )
Como coloco uma animação pra quando o inimigo andar???
Lucas Garcia Frade- Avançado
-
PONTOS : 1680
REPUTAÇÃO : 9
Idade : 17
Respeito as regras :
Re: [TUTORIAL] AI Enemy ( Jogos de terror )
para fazer isso sincronizado com animações eu teria que fazer um vídeo explicando todo o funcionamento do Mecanim ou do animation...
MarcosSchultz- Administrador
-
PONTOS : 61440
REPUTAÇÃO : 2154
Idade : 22
Áreas de atuação : Administrador do fórum
Respeito as regras :
Re: [TUTORIAL] AI Enemy ( Jogos de terror )
Vc pode fazer isso????
Isso serviria tanto pra inimigos como ate próprio personagem, desde já agradeço.
Isso serviria tanto pra inimigos como ate próprio personagem, desde já agradeço.
Lucas Garcia Frade- Avançado
-
PONTOS : 1680
REPUTAÇÃO : 9
Idade : 17
Respeito as regras :
Re: [TUTORIAL] AI Enemy ( Jogos de terror )
Olá, Marcos, tenho uma dúvida: eu quero que passando 5 segundos que o inimigo ve o jogador, ele passeie (vá para um dos AIpoints), mas so que o cronometro chega a 5 e zera e o inimigo continua vendo, continua parado.
//fiz public para acompanhar os valores na aba
public float cronometroVer;
void Start(){...}
void Update
{
....
if (DistanciaDoPlayer <= DistanciaDePercepcao && DistanciaDoPlayer > DistanciaDeSeguir) {
if(VendoOPlayer==true){
//adicionei:
cronometroVer+=Time.deltaTime;
if (cronometroVer>5)
{
cronometroVer=0;
Passear();
}
else
//continuacao de seu codigo
{
Olhar ();
}
...
}
Grato a atençao!
//fiz public para acompanhar os valores na aba
public float cronometroVer;
void Start(){...}
void Update
{
....
if (DistanciaDoPlayer <= DistanciaDePercepcao && DistanciaDoPlayer > DistanciaDeSeguir) {
if(VendoOPlayer==true){
//adicionei:
cronometroVer+=Time.deltaTime;
if (cronometroVer>5)
{
cronometroVer=0;
Passear();
}
else
//continuacao de seu codigo
{
Olhar ();
}
...
}
Grato a atençao!
Última edição por osiasbezerra em Seg Jun 01, 2015 8:47 pm, editado 3 vez(es) (Razão : Faltou uma uma chave)
osiasbezerra- Membro
- PONTOS : 1447
REPUTAÇÃO : 6
Respeito as regras :
Re: [TUTORIAL] AI Enemy ( Jogos de terror )
A linha do seu código que adicionei é entre a 37 e 38. Se quiser eu posso mandar todo o codigo, mas é porque é so essa parte alterada e a variavel cronometroVer criada, grato!
osiasbezerra- Membro
- PONTOS : 1447
REPUTAÇÃO : 6
Respeito as regras :
Re: [TUTORIAL] AI Enemy ( Jogos de terror )
Refiz melhor assim: e ainda, depois de 5 segundos, o inimigo continua olhando, sendo que eu quero ele va para o IAPoint:
if (DistanciaDoPlayer <= DistanciaDePercepcao && DistanciaDoPlayer > DistanciaDeSeguir) {
if(VendoOPlayer == true){
cronometroVer+=Time.deltaTime;
if (cronometroVer>5)
{
cronometroVer=0;
//codigo enxertado do Passear(); para nao cair no booleano de Passear();
naveMesh.acceleration = 5;
naveMesh.speed = VelocidadeDePasseio;
naveMesh.destination = DestinosAleatorios [AIPointAtual].position;
}
else{
Olhar ();
}
if (DistanciaDoPlayer <= DistanciaDePercepcao && DistanciaDoPlayer > DistanciaDeSeguir) {
if(VendoOPlayer == true){
cronometroVer+=Time.deltaTime;
if (cronometroVer>5)
{
cronometroVer=0;
//codigo enxertado do Passear(); para nao cair no booleano de Passear();
naveMesh.acceleration = 5;
naveMesh.speed = VelocidadeDePasseio;
naveMesh.destination = DestinosAleatorios [AIPointAtual].position;
}
else{
Olhar ();
}
osiasbezerra- Membro
- PONTOS : 1447
REPUTAÇÃO : 6
Respeito as regras :
MarcosSchultz- Administrador
-
PONTOS : 61440
REPUTAÇÃO : 2154
Idade : 22
Áreas de atuação : Administrador do fórum
Respeito as regras :
Re: [TUTORIAL] AI Enemy ( Jogos de terror )
- Código:
///Segue abaixo:
using UnityEngine;
using System.Collections;
public class INTELIGENCIADois : MonoBehaviour {
public Transform Player;
private NavMeshAgent naveMesh;
private 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;
private float cronometroDaPerseguicao,cronometroAtaque;
///ADICIONEI ESSE
public float cronometroVer;
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){
Passear();
}
if (DistanciaDoPlayer <= DistanciaDePercepcao && DistanciaDoPlayer > DistanciaDeSeguir) {
if(VendoOPlayer == true){
//ADICIONEI AQUI MEU BLOCO
cronometroVer+=Time.deltaTime;
if (cronometroVer>5)
{
cronometroVer=0;
naveMesh.acceleration = 5;
naveMesh.speed = VelocidadeDePasseio;
naveMesh.destination = DestinosAleatorios [AIPointAtual].position;
}
else{
// FIM DO MEU BLOCO ADICIONADO
Olhar ();
}
}else{
Passear();
}
}
if (DistanciaDoPlayer <= DistanciaDeSeguir && DistanciaDoPlayer > DistanciaDeAtacar) {
if(VendoOPlayer == true){
Perseguir();
PerseguindoAlgo = true;
}else{
Passear();
}
}
if (DistanciaDoPlayer <= DistanciaDeAtacar) {
Atacar();
}
//COMANDOS DE PASSEAR
if (DistanciaDoAIPoint <= 2) {
AIPointAtual = Random.Range (0, DestinosAleatorios.Length);
Passear();
}
//CONTADORES DE PERSEGUICAO
if (contadorPerseguindoAlgo == true) {
cronometroDaPerseguicao += Time.deltaTime;
}
if (cronometroDaPerseguicao >= 5 && VendoOPlayer == false) {
contadorPerseguindoAlgo = false;
cronometroDaPerseguicao = 0;
PerseguindoAlgo = false;
}
// CONTADOR DE ATAQUE
if (atacandoAlgo == true) {
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 (){
if (PerseguindoAlgo == false) {
naveMesh.acceleration = 5;
naveMesh.speed = VelocidadeDePasseio;
naveMesh.destination = DestinosAleatorios [AIPointAtual].position;
} else if (PerseguindoAlgo == true) {
contadorPerseguindoAlgo = true;
}
}
void Olhar(){
naveMesh.speed = 0;
transform.LookAt (Player);
}
void Perseguir(){
naveMesh.acceleration = 8;
naveMesh.speed = VelocidadeDePerseguicao;
naveMesh.destination = Player.position;
}
void Atacar (){
atacandoAlgo = true;
}
}
//Valeu a atencao!
Última edição por osiasbezerra em Ter Jun 02, 2015 2:33 am, editado 1 vez(es) (Razão : colocar em codigo)
osiasbezerra- Membro
- PONTOS : 1447
REPUTAÇÃO : 6
Respeito as regras :
Re: [TUTORIAL] AI Enemy ( Jogos de terror )
tem um erro no Start
você não está dizendo que naveMesh vai receber o componente navMesh
você fez isso:
em vez disso:
você não está dizendo que naveMesh vai receber o componente navMesh
você fez isso:
- Código:
naveMesh = transform.GetComponent ();
em vez disso:
- Código:
naveMesh = transform.GetComponent<NavMeshAgent> ();
MarcosSchultz- Administrador
-
PONTOS : 61440
REPUTAÇÃO : 2154
Idade : 22
Áreas de atuação : Administrador do fórum
Respeito as regras :
Re: [TUTORIAL] AI Enemy ( Jogos de terror )
Ok, Marcos, tem a questão do Unity 5 exigir o GetComponent e ajeitei. Sobre a lógica, eu
entendi meu erro: peço pra passear, mas como zerou o cronômetro ele apenas olha de novo.
Vou tentar corrigir aqui, depois te passo, valeu!
entendi meu erro: peço pra passear, mas como zerou o cronômetro ele apenas olha de novo.
Vou tentar corrigir aqui, depois te passo, valeu!
osiasbezerra- Membro
- PONTOS : 1447
REPUTAÇÃO : 6
Respeito as regras :
Re: [TUTORIAL] AI Enemy ( Jogos de terror )
Olá, Marcos Schultz, eu consegui fazer a pequena mudanca que queria, que é o inimigo olhar por um tempo pequeno e depois passear, vale ressaltar que esse seu código é excelente para eu usar animacoes, pois so com o navmash agent eu nao tinha nenhuma ideia, muito obrigado!
- Código:
using UnityEngine;
using System.Collections;
public class INTELIGENCIA : MonoBehaviour {
public Transform Player;
private NavMeshAgent naveMesh;
private 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;
private float cronometroDaPerseguicao,cronometroAtaque;
public bool ficaVendo=true;
public float cronometroDeVer;
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 (ficaVendo)
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){
Passear();
}
if (DistanciaDoPlayer <= DistanciaDePercepcao && DistanciaDoPlayer > DistanciaDeSeguir) {
if(VendoOPlayer){
Olhar ();
cronometroDeVer+=Time.deltaTime;
if (cronometroDeVer>=2)
{
VendoOPlayer = false;
ficaVendo=false;
cronometroDeVer=0;
}
}else{
Passear();
}
}
if (DistanciaDoPlayer <= DistanciaDeSeguir && DistanciaDoPlayer > DistanciaDeAtacar) {
if (!ficaVendo)
{
ficaVendo=true;
}
if(VendoOPlayer){
Perseguir();
PerseguindoAlgo = true;
}else{
Passear();
}
}
if (DistanciaDoPlayer <= DistanciaDeAtacar) {
Atacar();
}
//COMANDOS DE PASSEAR
if (DistanciaDoAIPoint <= 2) {
AIPointAtual = Random.Range (0, DestinosAleatorios.Length);
Passear();
}
//CONTADORES DE PERSEGUICAO
if (contadorPerseguindoAlgo == true) {
cronometroDaPerseguicao += Time.deltaTime;
}
if (cronometroDaPerseguicao >= 5 && VendoOPlayer == false) {
contadorPerseguindoAlgo = false;
cronometroDaPerseguicao = 0;
PerseguindoAlgo = false;
}
// CONTADOR DE ATAQUE
if (atacandoAlgo == true) {
cronometroAtaque += Time.deltaTime;
}
if (cronometroAtaque >= TempoPorAtaque && DistanciaDoPlayer <= DistanciaDeAtacar) {
atacandoAlgo = true;
cronometroAtaque = 0;
PLAYER.VIDA -= DanoDoInimigo;
Debug.Log ("recebeuAtaque");
} else if (cronometroAtaque >= TempoPorAtaque && DistanciaDoPlayer > DistanciaDeAtacar) {
atacandoAlgo = false;
cronometroAtaque = 0;
Debug.Log ("errou");
}
}
void Passear (){
if (PerseguindoAlgo == false) {
naveMesh.acceleration = 5;
naveMesh.speed = VelocidadeDePasseio;
naveMesh.destination = DestinosAleatorios [AIPointAtual].position;
} else if (PerseguindoAlgo == true) {
contadorPerseguindoAlgo = true;
}
}
void Olhar(){
naveMesh.speed = 0;
transform.LookAt (Player);
}
void Perseguir(){
naveMesh.acceleration = 8;
naveMesh.speed = VelocidadeDePerseguicao;
naveMesh.destination = Player.position;
}
void Atacar (){
atacandoAlgo = true;
}
}
osiasbezerra- Membro
- PONTOS : 1447
REPUTAÇÃO : 6
Respeito as regras :
Re: [TUTORIAL] AI Enemy ( Jogos de terror )
FIZ COMO NO VIDEO MAS TA DANDO ESTE ERRO O QUE PODE SER
?
IndexOutOfRangeException: Array index is out of range.
INTELIGENCIA.Update () (at Assets/ESCRIPTS/INTELIGENCIA.cs:19)
?
IndexOutOfRangeException: Array index is out of range.
INTELIGENCIA.Update () (at Assets/ESCRIPTS/INTELIGENCIA.cs:19)
jhon lenon- Iniciante
- PONTOS : 1366
REPUTAÇÃO : 0
Respeito as regras :
Re: [TUTORIAL] AI Enemy ( Jogos de terror )
Linha 19 é esta:
provavelmente você não linkou os AIPoints nas variaveis
- Código:
DistanciaDoAIPoint = Vector3.Distance(DestinosAleatorios[AIPointAtual].transform.position,transform.position);
provavelmente você não linkou os AIPoints nas variaveis
MarcosSchultz- Administrador
-
PONTOS : 61440
REPUTAÇÃO : 2154
Idade : 22
Áreas de atuação : Administrador do fórum
Respeito as regras :
Re: [TUTORIAL] AI Enemy ( Jogos de terror )
tinha me esquecido do size . vlw vc é o cara muito massa este forum vc encina de uma maneira muito facil .
jhon lenon- Iniciante
- PONTOS : 1366
REPUTAÇÃO : 0
Respeito as regras :
Re: [TUTORIAL] AI Enemy ( Jogos de terror )
como que eu faço para edicionar esse escript do inimigo me seguir e colocar audio dele andando e gritando quando me ver?
quero que o inimigo me mate se ele encostar em mim.
preciso muito de sua ajuda, sou iniciante e não sei quase nada de c#
vi suas video aulas de c# mas não consigo fazer.
obrigado
quero que o inimigo me mate se ele encostar em mim.
preciso muito de sua ajuda, sou iniciante e não sei quase nada de c#
vi suas video aulas de c# mas não consigo fazer.
obrigado
LUCIFER- Iniciante
- PONTOS : 1321
REPUTAÇÃO : 0
Respeito as regras :
Re: [TUTORIAL] AI Enemy ( Jogos de terror )
Lucifer, você pode ver o vídeo acima como também pode ver a minha vídeo aula.
basta saber configurar as variáveis que eu criei, como o dano do inimigo, etc...
Se assistir a minha vídeo aula completa com certeza saberá fazer o que está querendo
basta saber configurar as variáveis que eu criei, como o dano do inimigo, etc...
Se assistir a minha vídeo aula completa com certeza saberá fazer o que está querendo
MarcosSchultz- Administrador
-
PONTOS : 61440
REPUTAÇÃO : 2154
Idade : 22
Áreas de atuação : Administrador do fórum
Respeito as regras :
Re: [TUTORIAL] AI Enemy ( Jogos de terror )
O script funcionou agora vou tentar fazer ele morrer se o inimigo tocar nele, ja que não consigo colocar a barra de vida para ele ter dano.
mas só tem um problema, ele não me segue, passeia pelo mapa porem ele me evita.
o que seria?
eu ja linkei o player
obrigado pelo script e ajuda.
mas só tem um problema, ele não me segue, passeia pelo mapa porem ele me evita.
o que seria?
eu ja linkei o player
obrigado pelo script e ajuda.
LUCIFER- Iniciante
- PONTOS : 1321
REPUTAÇÃO : 0
Respeito as regras :
Re: [TUTORIAL] AI Enemy ( Jogos de terror )
colocou Tag "Player" no player?
MarcosSchultz- Administrador
-
PONTOS : 61440
REPUTAÇÃO : 2154
Idade : 22
Áreas de atuação : Administrador do fórum
Respeito as regras :
{RESOLVIDO}
ola marcos funcionou tudo 100%, so que fiz testei com poucos AI points eles não estão dando loop, quando inimigo chega no 3° aipoint por exemplo ele para se mexer e volta a se mexer só se ver o player
luizmeirelesx- Iniciante
- PONTOS : 1309
REPUTAÇÃO : 0
Respeito as regras :
Re: [TUTORIAL] AI Enemy ( Jogos de terror )
Olá marcos , funcionou tudo certinho , porem quando ele da o hit em min não acontece nada , e não aparece nada no console , o inimigo que estou usando é uma aranha que baixei do assets store.
Orixinals- Iniciante
- PONTOS : 1278
REPUTAÇÃO : 2
Respeito as regras :
Re: [TUTORIAL] AI Enemy ( Jogos de terror )
O meu também não recebe dano!

LeonradoGp- Membro
-
PONTOS : 1533
REPUTAÇÃO : 2
Idade : 19
Respeito as regras :
Re: [TUTORIAL] AI Enemy ( Jogos de terror )
Não tem dano por que eu não criei nenhum sistema de dano ué... basta ver o vídeo.
o que eu fiz foi isto:
Tem apenas um Debug.Log para dizer se recebeu o ataque e outro para dizer se errou... nenhuma função de dano
o que eu fiz foi isto:
- Código:
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");
}
Tem apenas um Debug.Log para dizer se recebeu o ataque e outro para dizer se errou... nenhuma função de dano
MarcosSchultz- Administrador
-
PONTOS : 61440
REPUTAÇÃO : 2154
Idade : 22
Áreas de atuação : Administrador do fórum
Respeito as regras :
Re: [TUTORIAL] AI Enemy ( Jogos de terror )
ESTA DANDO ESSE ERRO PORQUE?
zeca urubu- Membro
-
PONTOS : 1313
REPUTAÇÃO : 5
Idade : 20
Respeito as regras :
AI Enemy para Jogos de TERROR - UNITY 3D
Meu inimigo ele deita no chão e fica em 180° graus como arrumar?
gagasilva- Iniciante
- PONTOS : 1179
REPUTAÇÃO : 0
Respeito as regras :
Página 1 de 3 • 1, 2, 3

» [Tutorial] Usando sprites de jogos emulados
» [Tutorial] Glow line [By Rudas ]
» [TUTORIAL] BG E TIPOGRAFIA
» [Vídeo Tutorial] Técnicas Avançadas do uso da Pen Tool
» Tutorial Cave Sign
» [Tutorial] Glow line [By Rudas ]
» [TUTORIAL] BG E TIPOGRAFIA
» [Vídeo Tutorial] Técnicas Avançadas do uso da Pen Tool
» Tutorial Cave Sign
Página 1 de 3
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum