SchultzGames
Para tirar dúvidas, crie um tópico especifico na área "Dúvidas em Geral" e aguarde ser respondido. Evite comentar em tópicos não relacionados a sua dúvida Very Happy
TÓPICOS RECENTES:
Tópico:
Postado em:
Postado por:
Material
[____TÓPICO LIVRE____] FALE O QUE QUISER
AGRADECIMENTOS
[TUTORIAL] Objeto flutuar como se estivesse no espaço ou na água
jogo 3D como fazer o personagem...
Inimigo perder vida
VIRTUAL VOID
Previsão de destino com Rigidbody.AddForce (Jogo de Futebol)
Ajuda com scripts
JOGO DE SOBREVIVÊNCIA (Iniciantes)
[Modelo 3D]Unity Interior 3D Estilo De Terror + Download Grátis
FÍSICA DE UM CARRO PARA JOGO EM 2D
Fazer objeto preview andar de gridsize em gridsize
Acionar funções com button ?
-- [ COMO FAÇO PARA DESATIVAR UM UI DEPOIS DE +/-, 3 SEGUNDOS ? ] --
FORMAÇÃO DE EQUIPE - JOGO Puzzle/Plataforma
Home Simulator 2017 (Estilo The Sims em 1ª Pessoa) (Download Grátis) v1.0.2
Problema no checkpoint
Photon Network
IA zumbie veloz de mais
sistema de Entrar/Sair de veículos em Network (Photon Unity Networking)
Raycast Sol
[Script] Sistema de headshot estilo sniper elite [BÁSICO]
Foice gigante
Meus modelos 3D em fase de experimento
SITE MODELOS 3D PARA USO COMERCIAL
Instanciar objetos aonde mira
Fazer o player abrir caixas
Rotaçao de um objeto e paralizaçao de seu "filho" na hierarquia(Unity 2D)
ATUALIZAÇÃO - Joguem meu jogo [Aircraft - Space Guardian] Please !!
meu jogo feito na unity
Como otimizar meu game para android?
portais ajuda
[RESOLVIDO] INSTANCIAR PARTICULAS
Como fazer o canvas se ajusta com o tamanho da tela?
Destruir objeto depois da animação
Sistema de marcha de carro
(Duvida) Camera Seguir Player...
[TUTORIAL] Como programar um VOLANTE para veículos
[DUVIDA] "encostar" em um GameObject e Tomar Dano
TOP SECRET - Programador iniciante com experiencia em 2D
Dúvida sobre multiplayer!
PARTICULAS PLAY/STOP
ABRIR E FECHAR PORTA!
[TUTORIAL] Menu Pause AVANÇADO (Unity 5.3 ou superior)
Criação de uma mensagem notificação em objeto 3d no unity
Fazer a camera seguir o personagem porem quando ela chegar na parede ela pare de se movimenta
Tocar som ao andar.
Verificar se é a primeira vez que joga
COMO POSSO FAZER O INIMIGO MORRER COM TIRO?
Unity Microfone
OBJETO GIRAR QUANDO ARRASTAR O MOUSE
disolver/ desintegrar um objeto
BARRINHA PARA REBAIXAR O CARRO!
Chamar Metodo
Gerador de códigos
Duvida sobre patrulha aleatória
[TUTORIAL] Ligar e Desligar Lanterna
[TUTORIAL] ARMA NO UNITY 3D
SOM DO TIRO
Como usar uma animação de uma arma animada na Unity...
[Tutorial] Porta ativada por alavanca
MIRA PARA JOGO DE FPS ESTILO CSGO
Game Resistência
Parede ocas
Modificar uma barrinha!
[Quase Pronto] Survival Block. Testem e mandem os bugs pra mim.
[ME AJUDA] O player não se movimenta...
SIRENE ESTILO POLÍCIA MILITAR
Movimentaçao player
Cena Loading para carregar proximo Level
MUDAR FLOAT NO FIM DE UMA ANIMAÇÃO
RagDoll + Download Free -- feito por um gringo
[TUTORIAL] Criar Analógico Virtual UI Para Mobile.
[AJUDA] Cronometro
[PEDIDO] Designers ou Entendedores (Capa,Menu e ToolTip) 3 Imagens
[RESOLVIDO] Publicando Apk Parte 2
[TUTORIAL] IA Simples
[TUTORIAL] Ajustar o Brilho do LensFlare de Acordo com a Distância
CONTROLE ARCADE PARA JOGO DE CORRIDA
[TUTORIAL] IA Simples Parte 2 (Atirar)
[DEMO] Survival Block
Aprimoramento IA Inimiga
Batalha de Canhão
[RESOLVIDO] Camera Collider
Todos os inimigos morrem
Canal de tutoriais android
Area Para modeladores
Inimigo ao seguir flutua [ajuda]
[TUTORIAL] Sistema de tiro com RAYCAST (várias armas, mira laser, munição, dano, etc, etc)
Demo de jogo para testarem...
[TUTORIAL] Fazer um VOLANTE com UI, para Android
[DUVIDA] Como destruir um GameObject (cubo etc...) sem destruir seus "afilhados"
[Duvida] Como fazer uma luz se desativar ao ficar longe dela
[TUTORIAL] Inteligência artificial, inimigo e AIPoints
GRAFICO BUGADO [MOBILE]
Duvida sobre array de gameobject
ERRO NO APK
ANIMAÇÃO
Hoje à(s) 11:43 am
Hoje à(s) 11:30 am
Hoje à(s) 11:09 am
Hoje à(s) 10:19 am
Hoje à(s) 9:55 am
Hoje à(s) 9:09 am
Hoje à(s) 2:40 am
Hoje à(s) 12:34 am
Ontem à(s) 11:46 pm
Ontem à(s) 11:22 pm
Ontem à(s) 10:55 pm
Ontem à(s) 10:29 pm
Ontem à(s) 7:39 pm
Ontem à(s) 6:54 pm
Ontem à(s) 6:45 pm
Ontem à(s) 5:44 pm
Ontem à(s) 5:29 pm
Ontem à(s) 5:14 pm
Ontem à(s) 5:02 pm
Ontem à(s) 2:02 pm
Ontem à(s) 1:49 pm
Ontem à(s) 1:40 pm
Ontem à(s) 1:38 pm
Ontem à(s) 12:00 pm
Ontem à(s) 12:00 am
Seg Mar 27, 2017 11:46 pm
Seg Mar 27, 2017 10:30 pm
Seg Mar 27, 2017 10:05 pm
Seg Mar 27, 2017 8:52 pm
Seg Mar 27, 2017 8:01 pm
Seg Mar 27, 2017 7:32 pm
Seg Mar 27, 2017 6:33 pm
Seg Mar 27, 2017 6:24 pm
Seg Mar 27, 2017 3:57 pm
Seg Mar 27, 2017 3:39 pm
Seg Mar 27, 2017 1:42 pm
Seg Mar 27, 2017 12:13 pm
Seg Mar 27, 2017 6:41 am
Dom Mar 26, 2017 8:08 pm
Dom Mar 26, 2017 7:04 pm
Dom Mar 26, 2017 1:58 pm
Dom Mar 26, 2017 1:34 pm
Dom Mar 26, 2017 1:13 pm
Dom Mar 26, 2017 10:43 am
Dom Mar 26, 2017 1:37 am
Dom Mar 26, 2017 12:53 am
Dom Mar 26, 2017 12:52 am
Dom Mar 26, 2017 12:49 am
Dom Mar 26, 2017 12:46 am
Dom Mar 26, 2017 12:45 am
Dom Mar 26, 2017 12:34 am
Dom Mar 26, 2017 12:30 am
Dom Mar 26, 2017 12:20 am
Dom Mar 26, 2017 12:15 am
Dom Mar 26, 2017 12:05 am
Sab Mar 25, 2017 11:59 pm
Sab Mar 25, 2017 11:58 pm
Sab Mar 25, 2017 8:59 pm
Sab Mar 25, 2017 6:50 pm
Sab Mar 25, 2017 3:37 pm
Sab Mar 25, 2017 1:51 am
Sab Mar 25, 2017 1:31 am
Sex Mar 24, 2017 8:54 pm
Sex Mar 24, 2017 8:05 pm
Sex Mar 24, 2017 7:43 pm
Sex Mar 24, 2017 7:18 pm
Sex Mar 24, 2017 6:52 pm
Sex Mar 24, 2017 6:48 pm
Sex Mar 24, 2017 3:46 pm
Sex Mar 24, 2017 1:50 pm
Sex Mar 24, 2017 12:29 pm
Qui Mar 23, 2017 6:55 pm
Qui Mar 23, 2017 4:50 pm
Qui Mar 23, 2017 4:38 pm
Qui Mar 23, 2017 4:33 pm
Qui Mar 23, 2017 12:46 pm
Qui Mar 23, 2017 8:56 am
Qua Mar 22, 2017 7:47 pm
Qua Mar 22, 2017 7:35 pm
Qua Mar 22, 2017 7:30 pm
Qua Mar 22, 2017 3:28 pm
Ter Mar 21, 2017 11:50 pm
Ter Mar 21, 2017 10:14 pm
Ter Mar 21, 2017 7:22 pm
Ter Mar 21, 2017 6:08 pm
Ter Mar 21, 2017 5:00 pm
Ter Mar 21, 2017 3:22 pm
Ter Mar 21, 2017 3:08 pm
Ter Mar 21, 2017 2:13 pm
Ter Mar 21, 2017 10:53 am
Ter Mar 21, 2017 10:13 am
Ter Mar 21, 2017 12:26 am
Ter Mar 21, 2017 12:10 am
Ter Mar 21, 2017 12:09 am
Ter Mar 21, 2017 12:05 am
Ter Mar 21, 2017 12:02 am
Seg Mar 20, 2017 11:58 pm
Seg Mar 20, 2017 11:55 pm
Seg Mar 20, 2017 9:10 pm
PauloFR
Mic4el
dstaroski
dstaroski
Valakinhas
Callyde Jr
MikaelSteam
artplayer
willtuck
MikaelSteam
MateusWTP
Gabriel César O
hackernew404
wender
wender
MikaelSteam
zZAndersonZz
Jogos mini
wender
Callyde Jr
LegendGames
lucasfera15
dstaroski
Mic4el
joabr
joabr
hackernew404
rafaelllsd
niao
Junim
hackernew404
PauloFR
bielmol
Junim
Callyde Jr
rafaelllsd
PauloFR
Édipo
Gabriel César O
DuViDoSo34
masterjohn12
artplayer
Junim
Gabriel César O
Atiradogamer
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
wender
MarcosSchultz
MarcosSchultz
MarcosSchultz
MateusWTP
Gabriel César O
Gabriel César O
Sheyk
PauloFR
Gabriel César O
Weverton Borges da Silva
maikonluis
HeF Software
Junim
Junim
wender
bravoent
Marc7
rafaelllsd
MateusWTP
Gabriel César O
Gabriel César O
Madness
Paizudo
Gabriel César O
AnderGames
Gabriel César O
Matrirxp
rafaelllsd
Matrirxp
AndyShow
ffabim
rafaelllsd
MikaelSteam
PauloFR
bravoent
DuViDoSo34
Édipo
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
lucasfera15

[RESOLVIDO] Ajuda com IA

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

Resolvido [RESOLVIDO] Ajuda com IA

Mensagem por Guisao666 em Qua Jul 27, 2016 1:43 pm

Boa tarde pessoal, hoje trago à vocês mais uma dúvida que obtive no desenvolvimento do meu projeto.
Estou utilizando uma inteligência artificial baseada em AIPOINTS, onde o inimigo fica se deslocando pelos AIPOINTS e quando o mesmo localiza o player, começa a persegui-lo e atacá - lo. Quando o Inimigo chega à uma determinada distância do player, ele começa a dar dano no player, até mata - lo. Eu gostaria que vocês postassem um complemento ou um script novo que quando o inimigo atacasse o player e a vida do player chegasse à zero, ocorresse uma transição de cenas.

Segue abaixo os scripts que estou utilizando:

Script do Inimigo:
Código:
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
[RequireComponent(typeof(CharacterController))]
public class AIPOINTS : MonoBehaviour
{
    public Transform[] AIPoints; // PONTOS POR ONDE O INIMIGO PODE TRANSITAR
    private List<Transform> ListaDeAiPoints = new List<Transform>(); // LISTA QUE IRA GUARDAR OS AIPoints DISPONIVEIS PARA O INIMIGO ANDAR NO MOMENTO
    public float velocidadeDeMovimento = 5, DistanciaDeObservacao = 30, DistanciaDeSeguir = 20, DistanciaDeAtaque = 2; // VARIAVEIS A SEREM CONFIGURADAS
    private float distanciaDoJogador, cronometroTempoNoLocal;
    private int AIpoitAtual; // AIPoint ATUAL PARA ONDE O INIMIGO ESTA SE MOVENDDO
    private GameObject Player;
    private bool VendoOPlayer, EsperandoNoLocal, SeguindoOPlayer;
    public float TempoNoLocal = 0.001f; // TEMPO QUE O INIMIGO AGUARDA NO AIPoint ATE COMEÇAR A IR PARA O PROXIMO
    void Start()
    {
        Player = GameObject.FindWithTag("Player"); // PLAYER = OBJETO QUE CONTEM A TAG PLAYER
        for (int x = 0; x < AIPoints.Length; x++)
        { // AQUI EU FAÇO UM FOR EM TODOS OS OBJETOS DA VARIAVEL AIPoints
            Vector3 de = transform.position; // A VARIAVEL " de " RECEBE A POSIÇAO ATUAL DO INIMIGO
            Vector3 para = AIPoints[x].transform.position; // A VARIAVEL " para " RECEBE A POSIÇAO DO AIpointAtual
            if (!Physics.Linecast(de, para))
            { // AQUI EU CHEGO SE O CAMINHO ENTRE O INIMIGO E O AIPOINT ESTA LIVRE, SE ESTIVER:
                if (!ListaDeAiPoints.Contains(AIPoints[x]))
                { // AQUI EU CHECO SE O ELEMENTO JA ESTA NA LISTA, SE NAO ESTA, FAZ ISSO ABAIXO:
                    ListaDeAiPoints.Add(AIPoints[x]); //ADICIONA O AIPoint[X] NA LISTA
                }
            }
            else if (Physics.Linecast(de, para))
            { // SEM TEM ALGUMA COISA ENTRE O AIPoint ATUAL E O INIMIGO
                ListaDeAiPoints.Remove(AIPoints[x]); // REMOVE O ITEM AIPoint[X] ATUAL DA LISTA, PARA TORNA-LO INDISPONIVEL
            }
        }
    }
    void Update()
    {
        //================================================RAYCAST ( INIMIGO ESTA VENDO O PLAYER? )=========================================================//
        RaycastHit hit; // DECLARO UM RAYCAST
        Vector3 deOnde = transform.position; //A VARIAVEL deOnde RECEBE A POSIÇAO ATUAL DO INIMIGO
        Vector3 paraOnde = Player.transform.position;//A VARIAVEL paraOnde RECEBE A POSIÇAO ATUAL DO INIMIGO
        Vector3 direction = paraOnde - deOnde; // O VETOR direction RECEBE A POSIÇAO CORRESPONDENTE A B-A, OU SEJA, O VETOR paraOnde - o vetor deOnde
        if (Physics.Raycast(transform.position, direction, out hit, 1000) && distanciaDoJogador < DistanciaDeObservacao)
        { // SE RAYCAST, E SE A DISTANCIA DO PLAYER FOR MENOR DO QUE A MAXDISTANCIA
            if (hit.collider.gameObject.CompareTag("Player"))
            { // SE A TAG DO OBJETO QUE O RAYCAST COLIDIU FOR "PLAYER"
                VendoOPlayer = true; // VARIAVEL VendoOPlayer FICA VERDADEIRA
            }
            else
            { // SE NAO
                VendoOPlayer = false;// VARIAVEL VendoOPlayer FICA FALSA
            }
        }
        //===========================================LINECAST ( DEIXAR ACESSIVEL APENAS OS AIPOINTS VISIVEIS)=========================================//
        if (EsperandoNoLocal == true)
        { // SE A VARIAVEL EsperandoNoLocal ESTIVER VERDADEIRA
            for (int x = 0; x < AIPoints.Length; x++)
            { // AQUI EU FAÇO UM FOR EM TODOS OS OBJETOS DA VARIAVEL AIPoints
                Vector3 de = transform.position; // A VARIAVEL " de " RECEBE A POSIÇAO ATUAL DO INIMIGO
                Vector3 para = AIPoints[x].transform.position; // A VARIAVEL " para " RECEBE A POSIÇAO DO AIpointAtual
                if (!Physics.Linecast(de, para))
                { // AQUI EU CHEGO SE O CAMINHO ENTRE O INIMIGO E O AIPOINT ESTA LIVRE, SE ESTIVER:
                    Debug.DrawLine(de, para); // APENAS FAÇO UM DEBUG ( OPCIONAL ) PARA VER A TRAJETORIA DAS LINHAS
                    if (!ListaDeAiPoints.Contains(AIPoints[x]))
                    { // AQUI EU CHECO SE O ELEMENTO JA ESTA NA LISTA, SE NAO ESTA, FAZ ISSO ABAIXO:
                        ListaDeAiPoints.Add(AIPoints[x]); //ADICIONA O AIPoint[X] NA LISTA
                    }
                }
                else if (Physics.Linecast(de, para))
                { // SEM TEM ALGUMA COISA ENTRE O AIPoint ATUAL E O INIMIGO
                    Debug.DrawLine(de, para);// APENAS FAÇO UM DEBUG ( OPCIONAL ) PARA VER A TRAJETORIA DAS LINHAS
                    ListaDeAiPoints.Remove(AIPoints[x]); // REMOVE O ITEM AIPoint[X] ATUAL DA LISTA, PARA TORNA-LO INDISPONIVEL
                }
            }
            EsperandoNoLocal = false; // A VARIAVEL EsperandoNoLocal FICA FALSA
        }
        //==================================================== COMANDO PARA FAZER O INIMIGO ANDAR PELOS AIPOINTS======================================//
        distanciaDoJogador = Vector3.Distance(Player.transform.position, transform.position); // MEDE A DISTANCIA ENTRE O INIMIGO E O PLAYER
        if (distanciaDoJogador >= DistanciaDeObservacao || VendoOPlayer == false && EsperandoNoLocal == false)
        { // SE A DISTANCIA ENTRE INIMIGO E PLAYER FOR MENOR DO QUE A DISTANCIA DE OBSERVAÇAO E VAR'S....
            if (AIpoitAtual < ListaDeAiPoints.Count)
            { // CHECAGEM PRA NAO DAR ERRO DE ARRAY
                Vector3 target = ListaDeAiPoints[AIpoitAtual].transform.position;//A VARIAVEL target RECEBE A POSIÇAO DO AIpointAtual
                transform.LookAt(target);//O INIMIGO OLHA NA DIREÇAO DO AIPOINT SELECIONADO ( O AIpointAtual )
                transform.position = Vector3.MoveTowards(transform.position, target, velocidadeDeMovimento * Time.deltaTime); // MOVE O PALYER EM DIREÇAO AO AIpointAtual
                if (transform.position == ListaDeAiPoints[AIpoitAtual].transform.position)
                { // SE A POSIÇAO DO PLAYER FOR IGUAL A POSIÇAO DO AIpointAtual, OU SEJA, CHEGOU NO DESTINO
                    cronometroTempoNoLocal += Time.deltaTime; // COMEÇA A CONTAR O CRONOMETRO DE ESPERA NO LOCAL
                    EsperandoNoLocal = true; // A VARIAVEL EsperandoNoLocal FICA VERDADEIRA PARA INDICAR QUE ESTA ESPERANDO
                }
                if (cronometroTempoNoLocal >= TempoNoLocal)
                { // SE JA ESPEROU O TEMPO QUE DEVERIA ESPERAR NO LOCAL
                    cronometroTempoNoLocal = 0; // ZERA O CRONOMETRO PARA PODER REUTILIZAR ELE
                    int NumeroDeElementosDaLista2 = ListaDeAiPoints.Count; // UMA INT COM NOME NumeroDeElementosDaLista2 RECEBE O NUMERO DE ITENS QUE TEM NA LISTA
                    AIpoitAtual = Random.Range(0, NumeroDeElementosDaLista2); // A VARIAVEL AIpoitAtual RECEBE UM VALOR ALEATORIO ENTRE 0 E O O NUMERO DE ITENS QUE TEM NA LISTA
                }
            }
        }
        //================================================= COMANDOS PARA CHECAR DISTANCIA, OLHAR E SEGUIR================================================//
        else if (distanciaDoJogador >= DistanciaDeSeguir && distanciaDoJogador < DistanciaDeObservacao && VendoOPlayer == true)
        { // SE ESTA PERTO PARA OLHAR MAS AINDA E LONGE PARA SEGUIR:
            Olhar(); // VOID PARA O INIMIGO FICAR OLHANDO PARA O PLAYER
        }
        else if (distanciaDoJogador <= DistanciaDeSeguir && VendoOPlayer == true)
        {  //SE JA ESTA PERTO O SUFICIENTE PARA SEGUIR E ESTA VENDO O PLAYER
            Seguir();  // VOID PARA O INIMIGO SEGUIR O PLAYER
        }
        //=======================================================CORRIGIR BUGS DE INDEX RANGE=============================================================//
        if (AIpoitAtual >= ListaDeAiPoints.Count)
        { // SE O AIpoitAtual TIVER UM VALOR MAIOR DO QUE O MAXIMO DE ELEMENTOS QUE EXISTEM NA LISTA
            AIpoitAtual = ListaDeAiPoints.Count - 1; // A VARIAVEL AIpoitAtual RECEBE O NUMERO DE ELEMENTOS DA LISTA -1, ISSO EVITARA BUGS
        }
        else if (AIpoitAtual <= 0)
        { //SE O AIpoitAtual TIVER UM VALOR MENOR DO QUE ZERO:
            AIpoitAtual = 0;//AIpoitAtual RECEBERA O VALOR ZERO, ISSO EVITARA BUGS
        }
        //==========================================FAZER O PLAYER RECEBER DANO AO CHEGAR PERTO DO INIMIGO================================================//
        if (distanciaDoJogador <= DistanciaDeAtaque)
        { // SE A DISTANCIA ENTRE O INIMIGO E O PLAYER FOR MENOR DO QUE A DISTANCIA DE ATAQUE
            VidaPlayer.RecebendoDano = true; // A VARIAVEL RecebendoDano DO SCRIPT VidaPlayer FICA VERDADEIRA
        }
        else if (distanciaDoJogador > DistanciaDeAtaque)
        { // SE A DISTANCIA ENTRE O INIMIGO E O PLAYER FOR MAIOR DO QUE A DISTANCIA DE ATAQUE
            VidaPlayer.RecebendoDano = false; // A VARIAVEL RecebendoDano DO SCRIPT VidaPlayer FICA FALSA
        }
        //===============================================ESTAVA SEGUINDO MAS PAROU DE VER O PLAYER========================================================//
        if (SeguindoOPlayer == true && VendoOPlayer == false)
        { // SE ESTA SEGUINDO O PLAYER MAS NAO ESTA VENDO ELE
            for (int x = 0; x < AIPoints.Length; x++)
            { // AQUI EU FAÇO UM FOR EM TODOS OS OBJETOS DA VARIAVEL AIPoints
                Vector3 de = transform.position;  // A VARIAVEL " de " RECEBE A POSIÇAO ATUAL DO INIMIGO
                Vector3 para = AIPoints[x].transform.position;  // A VARIAVEL " para " RECEBE A POSIÇAO DO AIpointAtual
                if (!Physics.Linecast(de, para))
                { // AQUI EU CHEGO SE O CAMINHO ENTRE O INIMIGO E O AIPOINT ESTA LIVRE, SE ESTIVER:
                    Debug.DrawLine(de, para); // APENAS FAÇO UM DEBUG ( OPCIONAL ) PARA VER A TRAJETORIA DAS LINHAS
                    if (!ListaDeAiPoints.Contains(AIPoints[x]))
                    { // AQUI EU CHECO SE O ELEMENTO JA ESTA NA LISTA, SE NAO ESTA, FAZ ISSO ABAIXO:
                        ListaDeAiPoints.Add(AIPoints[x]); //ADICIONA O AIPoint[X] NA LISTA
                    }
                }
                else if (Physics.Linecast(de, para))
                { // SEM TEM ALGUMA COISA ENTRE O AIPoint ATUAL E O INIMIGO
                    Debug.DrawLine(de, para);// APENAS FAÇO UM DEBUG ( OPCIONAL ) PARA VER A TRAJETORIA DAS LINHAS
                    ListaDeAiPoints.Remove(AIPoints[x]); // REMOVE O ITEM AIPoint[X] ATUAL DA LISTA, PARA TORNA-LO INDISPONIVEL
                }
            }
            int NumeroDeElementosDaLista2 = ListaDeAiPoints.Count; // A VARIAVEL NumeroDeElementosDaLista2 RECEBE O NUMERO DE ELEMENTOS CONTIDOS NA LISTA
            AIpoitAtual = Random.Range(0, NumeroDeElementosDaLista2); // A VARIAVEL AIpoitAtual RECEBE UM VALOR ALEATORIO ENTRE 0 E O O NUMERO DE ITENS QUE TEM NA LISTA
            SeguindoOPlayer = false; // A VARIAVEL SeguindoOPlayer RECEBE FALSE
        }
    }
    //================================================================= OUTRAS VOIDS=======================================================================//
    void Olhar()
    { // VOID QUE FAZ O INIMIGO OLHAR PARA O PLAYER
        Vector3 OlharPlayer = Player.transform.position; // O VETOR OlharPlayer RECEBE A POSIÇAO DO PLAYER
        transform.LookAt(OlharPlayer); // O INIMIGO PLHA EM DIREÇAO AO PLAYER
    }
    void Seguir()
    {
        SeguindoOPlayer = true; // A VARIAVEL SeguindoOPlayer FICA VERDADEIRA
        Vector3 SeguirPlayer = Player.transform.position; // O VETOR SeguirPlayer RECEBE A POSIÇAO DO PLAYER
        transform.position = Vector3.MoveTowards(transform.position, SeguirPlayer, velocidadeDeMovimento * Time.deltaTime); // O INIMIGO SE MOVE EM DIREÇAO AO PLAYER
    }
}

Script do Player:
Código:
using UnityEngine;
using System.Collections;
public class VidaPlayer : MonoBehaviour
{
    public static bool RecebendoDano; //VARIAVEL ESTATICA QUE INDICA SE ESTA RECEBENDO DANO OU NAO
    public float tempoPorAtaque = 1.5f; // TEMPO MINIMO ENTRE CADA ATAQUE QUE O INIMIGO PODE DAR
    private float cronometroDeAtaque; // CRONOMETRO QUE CONTROLA O TEMPO DOS ATAQUES
    public int VidaDoPlayer = 100; // VIDA DO PERSONAGEM
    public int DanoPorAtaque = 40;
    void Start()
    {
        RecebendoDano = false; // A VARIAVEL RecebendoDano RECEBE FALSO
    }
    void Update()
    {
        if (RecebendoDano == true)
        { // SE RecebendoDano ESTA VERDADEIRO
            cronometroDeAtaque += Time.deltaTime; // O CRONOMETRO COMEÇA A CONTAR
        }
        else
        { // SE NAO, OU SEJA, SE RecebendoDano ESTA FALSO
            cronometroDeAtaque = 0; // O CRONOMETRO RECEBE 0
        }
        if (cronometroDeAtaque >= tempoPorAtaque)
        { // SE O CRONOMETRO ULTRAPASSOU O TEMPO POR ATAQUE
            cronometroDeAtaque = 0; // CRONOMETRO RECEBE 0
            VidaDoPlayer = VidaDoPlayer - DanoPorAtaque; // A VIDA DO PLAYER RECEBE O VALOR DELA MESMA MENOS O DANO DO ATAQUE
        }
        if (VidaDoPlayer <= 0)
        { // SE A VIDA FOR MENOR OU IGUAL A 0
            Application.Quit(); // SAI DO JOGO
        }
    }
}
Sim, tem um linha que diz que quando o Player morre, sai do jogo, mas gostaria que trocasse a cena.

Guisao666
Iniciante
Iniciante

PONTOS : 446
REPUTAÇÃO : 0
Áreas de atuação : Iniciante em programação da linguagem C#.
Iniciante em Level Designer.
Respeito as regras :

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Resolvido Re: [RESOLVIDO] Ajuda com IA

Mensagem por artplayer em Qua Jul 27, 2016 1:57 pm

Não entendi bem. Seria só trocar de cena quando o jogador morrer?

Código:
using UnityEngine;
using System.Collections;
using UnityEngine.SceneManagement;

public class ClasseExemplo : MonoBehaviour {

void MudaCena(){
 SceneManager.LoadScene ("NovaCena");
}

// Use this for initialization
 void Start () {
 
 }
 
 // Update is called once per frame
 void Update () {
 
 }

}

Tipo isso? Foi mal se falei besteira, eu não devo ter entendido a tua pergunta.

Abraços e Sucesso!
avatar
artplayer
ProgramadorMaster

Masculino PONTOS : 754
REPUTAÇÃO : 157
Idade : 32
Respeito as regras :

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Resolvido Re: [RESOLVIDO] Ajuda com IA

Mensagem por Guilherme_cj852 em Qua Jul 27, 2016 2:12 pm

Assim?
Código:
using UnityEngine;
using System.Collections;
using UnityEngine.SceneManagement;

public class VidaPlayer : MonoBehaviour
{
   public static bool RecebendoDano; //VARIAVEL ESTATICA QUE INDICA SE ESTA RECEBENDO DANO OU NAO
   public float tempoPorAtaque = 1.5f; // TEMPO MINIMO ENTRE CADA ATAQUE QUE O INIMIGO PODE DAR
   private float cronometroDeAtaque; // CRONOMETRO QUE CONTROLA O TEMPO DOS ATAQUES
   public int VidaDoPlayer = 100; // VIDA DO PERSONAGEM
   public int DanoPorAtaque = 40;
   void Start()
   {
      RecebendoDano = false; // A VARIAVEL RecebendoDano RECEBE FALSO
   }
   void Update()
   {
      if (RecebendoDano == true)
      { // SE RecebendoDano ESTA VERDADEIRO
         cronometroDeAtaque += Time.deltaTime; // O CRONOMETRO COMEÇA A CONTAR
      }
      else
      { // SE NAO, OU SEJA, SE RecebendoDano ESTA FALSO
         cronometroDeAtaque = 0; // O CRONOMETRO RECEBE 0
      }
      if (cronometroDeAtaque >= tempoPorAtaque)
      { // SE O CRONOMETRO ULTRAPASSOU O TEMPO POR ATAQUE
         cronometroDeAtaque = 0; // CRONOMETRO RECEBE 0
         VidaDoPlayer = VidaDoPlayer - DanoPorAtaque; // A VIDA DO PLAYER RECEBE O VALOR DELA MESMA MENOS O DANO DO ATAQUE
      }
      if (VidaDoPlayer <= 0)
      { // SE A VIDA FOR MENOR OU IGUAL A 0
         SceneManager.LoadScene("SUACENA"); // Aqui voce escolhe qual cena carregar
      }
   }
}
avatar
Guilherme_cj852
ProgramadorMaster

Masculino PONTOS : 1027
REPUTAÇÃO : 116
Idade : 16
Áreas de atuação : Programador C#
Designer
Iniciante em PHP
Respeito as regras :

Ver perfil do usuário http://ugames-studio.weebly.com/

Voltar ao Topo Ir em baixo

Resolvido Re: [RESOLVIDO] Ajuda com IA

Mensagem por Guisao666 em Qua Jul 27, 2016 3:16 pm

Sim cara, muito obrigado mesmo.

Guisao666
Iniciante
Iniciante

PONTOS : 446
REPUTAÇÃO : 0
Áreas de atuação : Iniciante em programação da linguagem C#.
Iniciante em Level Designer.
Respeito as regras :

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum