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:
Duvida Sobre Unity 3d
Erro com textura, cor e skybox
Mapa de um jogo
Alinhar o movimento do trem 2d sempre no chão !
Gradiente de cores
Como fazer IA de inimigo se desviar de tiro?
[Projeto] Line Battle
Salvar dados
[TUTORIAL] Loja Virtual Fácil e Grátis
Missil perseguidor
Iniciante duvida em listar inimigos =/
[TUTORIAL] Mover e rotacionar objeto em relação a posição do MOUSE
Identificar Limite de Tela
Valor Multiplica Quando Troca Cena
Sistema de um game de Vôlei de praia
Como Usar a Mesma Animação Pra Personagens Diferentes na Unity ?
[TUTORIAL] Photon Networking Part.2 (Conectando ao servidor)
[DUVIDA]Pergunta Aleatória
[Duvida] Controle de Terceira pessoa por JoyStick
Imagem Aparecer como pergunta
Dúvidas sobre aparecer imagem na tela
Mudar a visiabilidade do inputField
[Duvida] Erro em "Public Float". "Not all code paths return a value"
Procuro Equipe Para Criação de Um Jogo
(DÚVIDA) USAR O UNITY PRO SENDO QUE CRACKEADO DA BRONCA?
JOGO QUIS - Como fazer as perguntas serem aleatórias?
Botão UI - Toggle (Botão Mutar) - Como deixar ele em todas as cenas?
Como criar um sistema de Ranking simples.
Loja e inventario em jogo fps multiplayer.
TILEMAP NÃO FUNCIONA QUANDO ARRASTO AS SPRITES PARA TILEPALETTE
[Devlog] ZByte Defender:The Game 10/04 (Alpha Aberta) + Download
Como Fazer quiz com pergunta Aletórias no Unity-5
Fixar o objeto no chão !
Exportar animações
[TUTORIAL] Unity + PHP + Mysql (com PDO)
base para multiplayer , qual melhor método, e restrições
Scena Demorando muito Para Carregar!
[ NONAME ] Procura de pessoas interessadas
Apertar mais de um botão no UNITY
Zerar os tempos do Cronometro Unity
PHP retorno?
The Lost Blade (Em Desenvolvimento)
Spawn varios objetos
[TUTORIAL] Sistema de vida,morte,dano
Erro UNITY 5 NOTA PARA JOGO DE TERROR
Botão no Touch || saltar e tiro
SOM Duplicado unity3d
Reproduzir audio no if c## e musica continuar tocando entre cenas.
Bug com detecção de chão
Girar personagem no próprio eixo usando joystick virtual
Asset de Efeito de congelamento
Tirar seleção de Objeto na Cena
Command 888
Care Box - Disponível na Play Store
[TUTORIAL] Script de arma automatica
[____ADMINISTRAÇÃO____] Alterações IMPORTANTES no fórum.
Site de assets
" FUEL " O maior jogo do Mundo
[TUTORIAL] Compilar para Android
[TUTORIAL] Unity 5 - Wheel Collider, veículos, suspensão realista.
Deformação de Objetos
Itens de diferentes tamanho no inventario
[TUTORIAL] Sistema COMPLETO de câmeras
Efeito arma giratória
[TUTORIAL] Criando Plants VS Zombies (remake - Parte 1)
Como aumentar os dados de Black In do color grading do post processing via script?
[DUVIDA] Fps multiplayer
[Asset] Script Arma Completo Incluso Recuo. Incluso outros Scripts
[TUTORIAL] Controle 3ª pessoa com animações mecânicas (root motion)
Novo jogo - Astero - PlayStore
IA de Patrulha do inimigo !
Modeladores e programadores por favor.
Dúvida com jogo estilo Clash Royale
Survalways :: procuro interessados : programador/áudio
Personagem morrer ao cair da tela
Problema na configuração do Wheel Colider (para um jogo mobile)
Celular Virtual
[TUTORIAL] SISTEMA DE CHUVA COM PARTICULAS.
Sobre Coolers ( Fans )
[TUTORIAL] Criar Analógico Virtual UI Para Mobile.
Loading cronometrado
[TUTORIAL] Unity 5 - Como criar o próprio FPS Controller
The Walker [Open - Beta 0.02v]
[____TÓPICO LIVRE____] FALE O QUE QUISER (Parte 2)
unity não quer ativar a lincense
Script SceneManager.GetActiveScene
[DÚVIDA] Como publicar um jogo na Windows Store/Loja do Windows 10?
Sistema de Compra incompleto!
Como por sistema de score em projeto Match 3 tipo Candy Crush?
Como parar um Cronometro?
como fazer o corpo se mover junto com a roupa do personagem ?
sistema de dia e noite de acordo com a hora do computador.
A Unity detecta o click mouse como um touch?
Beta_Jogo (Lost and Alone)Por favor Avaliem!
Projeto em andamento! (Graficos quase realistas)
Raycast em objeto dentro de collider?
Build setting não entra
[Jogo Mobile] Alien - Lost in the space
Ajuda com cores.
Hoje à(s) 2:40 pm
Hoje à(s) 1:57 pm
Hoje à(s) 12:33 pm
Hoje à(s) 12:03 pm
Hoje à(s) 10:17 am
Hoje à(s) 7:46 am
Hoje à(s) 7:34 am
Hoje à(s) 6:39 am
Hoje à(s) 6:20 am
Hoje à(s) 5:54 am
Hoje à(s) 3:40 am
Hoje à(s) 12:23 am
Ontem à(s) 11:33 pm
Ontem à(s) 10:50 pm
Ontem à(s) 10:08 pm
Ontem à(s) 9:38 pm
Ontem à(s) 8:50 pm
Ontem à(s) 8:22 pm
Ontem à(s) 4:55 pm
Ontem à(s) 4:28 pm
Ontem à(s) 3:50 pm
Ontem à(s) 3:03 pm
Ontem à(s) 2:55 pm
Ontem à(s) 12:52 pm
Ontem à(s) 12:33 pm
Ontem à(s) 11:08 am
Ontem à(s) 10:59 am
Ter Maio 22, 2018 11:27 pm
Ter Maio 22, 2018 7:27 pm
Ter Maio 22, 2018 5:48 pm
Ter Maio 22, 2018 5:18 pm
Ter Maio 22, 2018 5:09 pm
Ter Maio 22, 2018 4:36 pm
Ter Maio 22, 2018 8:44 am
Ter Maio 22, 2018 5:56 am
Seg Maio 21, 2018 9:44 pm
Seg Maio 21, 2018 8:01 pm
Seg Maio 21, 2018 7:00 pm
Seg Maio 21, 2018 3:42 pm
Seg Maio 21, 2018 3:32 pm
Seg Maio 21, 2018 2:13 am
Dom Maio 20, 2018 8:41 pm
Dom Maio 20, 2018 8:38 pm
Dom Maio 20, 2018 7:32 pm
Dom Maio 20, 2018 6:34 pm
Dom Maio 20, 2018 6:33 pm
Dom Maio 20, 2018 3:13 pm
Dom Maio 20, 2018 2:11 pm
Dom Maio 20, 2018 1:40 pm
Dom Maio 20, 2018 1:00 pm
Dom Maio 20, 2018 12:25 pm
Dom Maio 20, 2018 12:07 pm
Dom Maio 20, 2018 9:38 am
Dom Maio 20, 2018 8:06 am
Sab Maio 19, 2018 8:06 pm
Sab Maio 19, 2018 5:40 pm
Sab Maio 19, 2018 1:34 pm
Sab Maio 19, 2018 1:06 pm
Sab Maio 19, 2018 12:13 pm
Sab Maio 19, 2018 11:10 am
Sab Maio 19, 2018 9:51 am
Sab Maio 19, 2018 6:11 am
Sab Maio 19, 2018 12:14 am
Sex Maio 18, 2018 10:49 pm
Sex Maio 18, 2018 7:12 pm
Sex Maio 18, 2018 4:55 pm
Sex Maio 18, 2018 11:06 am
Sex Maio 18, 2018 10:39 am
Sex Maio 18, 2018 10:12 am
Sex Maio 18, 2018 8:09 am
Qui Maio 17, 2018 9:51 pm
Qui Maio 17, 2018 5:53 pm
Qui Maio 17, 2018 5:49 pm
Qui Maio 17, 2018 4:49 pm
Qui Maio 17, 2018 3:55 pm
Qui Maio 17, 2018 1:19 am
Qui Maio 17, 2018 12:12 am
Qua Maio 16, 2018 6:59 pm
Qua Maio 16, 2018 11:59 am
Qua Maio 16, 2018 2:27 am
Ter Maio 15, 2018 11:41 pm
Ter Maio 15, 2018 11:36 pm
Ter Maio 15, 2018 8:38 pm
Ter Maio 15, 2018 8:23 pm
Ter Maio 15, 2018 3:37 pm
Ter Maio 15, 2018 2:43 pm
Ter Maio 15, 2018 1:57 pm
Ter Maio 15, 2018 10:04 am
Ter Maio 15, 2018 7:48 am
Ter Maio 15, 2018 1:30 am
Seg Maio 14, 2018 8:11 pm
Seg Maio 14, 2018 6:06 pm
Seg Maio 14, 2018 4:59 pm
Seg Maio 14, 2018 4:33 pm
Seg Maio 14, 2018 4:20 pm
Seg Maio 14, 2018 3:41 pm
Seg Maio 14, 2018 2:16 pm
Seg Maio 14, 2018 1:23 pm
Seg Maio 14, 2018 12:55 pm
MRX
Souris
Callyde Jr
Netão
googolepton
larissatds
UnixGameStudio
arnaldojunior
Callyde Jr
Callyde Jr
speedluk
tony
azool
felipehobs1
isah
TioUV
Phph09
Rayllander
DuViDoSo
Pedro Marquesini
negoll
Phph09
felipehobs1
zeca urubu
fabriciorsz34
Rayllander
Rayllander
luansantos
MRX
RenatoMoran
Mateus2583
Rayllander
Netão
Phph09
Callyde Jr
Phph09
fabriciorsz34
ruanzikaad
Souris
Felix
Callyde Jr
ismarspn
Lteo
Callyde Jr
Rafa123
Douglas Costa Amorim
Rayllander
Rayllander
Joaopm1
Jmspp
Dom3000
Dom3000
Callyde Jr
Another Developer
Merotec32
Matrirxp
SuperGamer
Callyde Jr
Souris
francisco barroso
Lteo
Callyde Jr
MarcosSchultz
Flávio
MayLeone
YmKx
Daniel Dória
dimmuo
dstaroski
Édipo
dkrazor
ErikBreno360
RGKC
M4theuz
mafipt
zKilleD
Zack2
Callyde Jr
julioou
mateusvasco100
WesFarias
MarcosSchultz
Souris
Souris
thiagograssi
vitorhugo
gcs13
MarcosUAC
dracuno
niao
Dom3000
Johann santos
otavio00augusto
Zecandy
julioou
isah
Daniel Dória
leocc
euvictoralmeida

[RESOLVIDO] Ajuda com IA

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 : 867
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 : 1388
REPUTAÇÃO : 250
Idade : 33
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
Programador

Masculino PONTOS : 1470
REPUTAÇÃO : 128
Idade : 17
Á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 : 867
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

Voltar ao Topo


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