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:
Como faço para a musica continuar tocando quando muda de cena?
Meu script de ser morto atropelado não funciona
[____TÓPICO LIVRE____] FALE O QUE QUISER (Parte 2)
[____NOVA ÁREA____] Projetos em andamento
[RESOLVIDO] Arrumar erros
[Asset] Simple Unity Assets - Pacote de assets para Unity.
[____SUGESTÕES PARA O FÓRUM____]
Cenário
[TUTORIAL] SISTEMA DE CHUVA COM PARTICULAS.
(DUVIDA) Acessar um valor de outro Script em c#
Mostrar Pontuação No Game Over
Inventario e craft estilo ark
Mudar de scene multiplayer?
Como eu faço um ontrigger "invertido"?
Raycast em circulos(point to ckick)
[RESOLVIDO] COMO FAZ PARA FAZER 2 TERRAINS TOTALMENTE DIFERENTES DO OUTRO?
Unity não reconhece meu celular
MultiPlayer Unity Para Android!
Props Animations Asset
Mostrar Pontuação no game over
Terminei o meu jogo, mas algo deu errado.
[ASSET] Facilitação de controle de objetos
Problema em listar salas
Ranking com nome
Novo jogo - Stackx
Segurança no Unity
Tem um modo facil para esperar tanto tempo e ocorrer uma açao?
[TUTORIAL] Entrar no carro estilo GTA
[RESOLVIDO] Tem como melhorar a colisao? os objetos entram nos outros, caem do chao ,etc..
[DEVLOG] Projeto - Girl Blade (download Pré-Alpha)
DÚVIDA RECRIAR EFEITO NA UNITY
Me ofereço como escritor
Como adicionar uma força oposta a colisão no rigidbody?
Ajuda com script
[Dúvida]Erro error CS1525: Unexpected symbol 'u' em script
[Resolvido] É possível usar a unity com outros programas ? (config do pc na dúvida ;-; )
Dano no inimigo
[Dúvida]Erro "UnityEngine.AI.NavMeshAgent.Stop()' is obsolete" como resolver ?
[Dúvida]Erro "Building to the assets folder is not allowed" ao tentar fazer build
[Equipe]Preciso de ajuda de um programador
CAMERA ENTRANDO NA PAREDE
como posso fazer um corpo perder a animação
Teste De Multiplayer
Como adicionar uma força oposta a colisão no rigidbody?
Usar o unity sem internet
Cenário jogo Endless Running
Photon Unity como funcina?
[____APOIE O FÓRUM E O CANAL E GANHE RECOMPENSAS____]
UM FANTASMA APARECEU NO MEU JOGO.
Como mudar cor do botao UI
[TUTORIAL] FPSController nadar e mergulhar, junto com efeito submerso
Como sincronizar objetos do client para o host
Em breve EDU_animal-controle
Preciso de level designers com conhecimento avançado no Blender
[TUTORIAL] Como criar um HUD MULTIPLAYER personalizavel
[Duvida] Script pegar itens
Um processador de 2 nucleos versus um de 8 nucleos tem diferença na Unity?
[TUTORIAL] SALVAR JOGO AUTOMATICAMENTE
[TUTORIAL] Inteligência artificial, inimigo e AIPoints
Como faço para deixar o objeto transparente ao passar atraz?
Shader Standart - Fade . Fica transparente / Bugado (Paredes Semi-Transparentes)
[TUTORIAL] Unity 5 - Wheel Collider, veículos, suspensão realista.
Existe Alguma VOID que atualize menos que a update
Movimento dos seios e cabelo
[TUTORIAL] Barra de VIDA / HP contínua
[Modelo]Modelo Com osso[Modelo]
[TUTORIAL] Mensagem aparecer na tela conforme a distância do jogador (Unity 5)
[TUTORIAL] MENU PRINCIPAL - UNITY 5 (5.3 ou superior) (Com UI)
Não aparece os eixos na animação
Tutorial de Achar coisas no projeto por script e poder setalas nos scripts
Da para fazer anti-hack com o photon??
Como achar um item no projeto ?
Será que um dia,vai existir uma versão em PT-BR da unity?
Movimentação igual ao do battlerite
Existe um limite da quantidade de scripts que você poder fazer na unity?
aVork - Física realista para veículos
Script continua funcionando mesmo depois de desabilitado
procurar jogador por nome da string
[FPSController]Verificar a velocidade de um rigidbody
Erro com script de inventario.
BoxCollidernão acompanha Animação
Mudar o SetActive ao clicar em um GameObject.
[RESOLVIDO]Multiplayer Life?
Sistema de jogo interativo
Programador de inventario e craft.
RigidBody2D not found?
Passar de estado no meio da animação
como mudar as distancias dos lodGrup por script?
[BUG] Laucher da unity aparece algumas pastas!
Erro de script de lobby photon.
Como achar um item no projeto ?
Sistema de troca de equipamento
Tem como fazer imagens andando pela tela?
Impulso com Swipe
Sistema de telefone
audiosource minima distancia e maxima distancia nao funciona
[MODELO]--ARMA--[3D MODEL]
Metodos/comandos/referencia desaparecem.
Sistema de dia e noite bugando outras coisas quando fica anoite
Hoje à(s) 1:35 pm
Hoje à(s) 1:26 pm
Hoje à(s) 1:12 pm
Hoje à(s) 9:23 am
Hoje à(s) 4:10 am
Hoje à(s) 2:00 am
Hoje à(s) 1:57 am
Hoje à(s) 12:48 am
Ontem à(s) 11:56 pm
Ontem à(s) 11:19 pm
Ontem à(s) 10:35 pm
Ontem à(s) 9:13 pm
Ontem à(s) 6:32 pm
Ontem à(s) 5:50 pm
Ontem à(s) 3:24 pm
Ontem à(s) 1:30 pm
Ontem à(s) 12:41 pm
Ontem à(s) 10:30 am
Ontem à(s) 7:29 am
Sex Nov 17, 2017 10:05 pm
Sex Nov 17, 2017 5:10 pm
Sex Nov 17, 2017 4:43 pm
Sex Nov 17, 2017 3:20 pm
Sex Nov 17, 2017 2:01 pm
Sex Nov 17, 2017 11:46 am
Sex Nov 17, 2017 8:33 am
Sex Nov 17, 2017 12:40 am
Sex Nov 17, 2017 12:31 am
Qui Nov 16, 2017 11:18 pm
Qui Nov 16, 2017 11:12 pm
Qui Nov 16, 2017 10:48 pm
Qui Nov 16, 2017 10:47 pm
Qui Nov 16, 2017 10:46 pm
Qui Nov 16, 2017 10:20 pm
Qui Nov 16, 2017 10:15 pm
Qui Nov 16, 2017 10:09 pm
Qui Nov 16, 2017 9:52 pm
Qui Nov 16, 2017 8:13 pm
Qui Nov 16, 2017 8:10 pm
Qui Nov 16, 2017 8:07 pm
Qui Nov 16, 2017 7:56 pm
Qui Nov 16, 2017 5:39 pm
Qui Nov 16, 2017 5:21 pm
Qui Nov 16, 2017 3:33 pm
Qui Nov 16, 2017 2:56 pm
Qui Nov 16, 2017 1:37 pm
Qui Nov 16, 2017 1:20 pm
Qui Nov 16, 2017 11:26 am
Qui Nov 16, 2017 11:24 am
Qua Nov 15, 2017 9:32 pm
Qua Nov 15, 2017 9:00 pm
Qua Nov 15, 2017 7:05 pm
Qua Nov 15, 2017 6:05 pm
Qua Nov 15, 2017 2:09 pm
Qua Nov 15, 2017 10:35 am
Qua Nov 15, 2017 2:24 am
Ter Nov 14, 2017 9:54 pm
Ter Nov 14, 2017 9:53 pm
Ter Nov 14, 2017 6:41 pm
Ter Nov 14, 2017 2:25 pm
Ter Nov 14, 2017 2:25 pm
Ter Nov 14, 2017 1:45 pm
Ter Nov 14, 2017 12:00 pm
Seg Nov 13, 2017 3:12 pm
Seg Nov 13, 2017 8:27 am
Dom Nov 12, 2017 10:09 pm
Dom Nov 12, 2017 9:55 pm
Dom Nov 12, 2017 8:52 pm
Dom Nov 12, 2017 6:43 pm
Dom Nov 12, 2017 5:02 pm
Dom Nov 12, 2017 3:23 pm
Dom Nov 12, 2017 2:15 pm
Dom Nov 12, 2017 1:43 pm
Dom Nov 12, 2017 1:25 pm
Dom Nov 12, 2017 11:35 am
Dom Nov 12, 2017 12:13 am
Sab Nov 11, 2017 10:11 pm
Sab Nov 11, 2017 9:44 pm
Sab Nov 11, 2017 9:40 am
Sex Nov 10, 2017 7:52 pm
Sex Nov 10, 2017 7:08 pm
Sex Nov 10, 2017 6:59 pm
Sex Nov 10, 2017 6:58 pm
Sex Nov 10, 2017 6:09 pm
Sex Nov 10, 2017 6:00 pm
Sex Nov 10, 2017 5:22 pm
Sex Nov 10, 2017 2:58 pm
Sex Nov 10, 2017 2:31 pm
Sex Nov 10, 2017 12:29 pm
Sex Nov 10, 2017 12:00 pm
Qui Nov 09, 2017 11:47 pm
Qui Nov 09, 2017 11:28 pm
Qui Nov 09, 2017 8:46 pm
Qui Nov 09, 2017 8:26 pm
Qui Nov 09, 2017 8:08 pm
Qui Nov 09, 2017 5:59 pm
Qui Nov 09, 2017 5:29 pm
Qui Nov 09, 2017 1:58 pm
Qui Nov 09, 2017 12:39 pm
DUT
DUT
dstaroski
glauco
jamaisfiih
dimmuo
guimaraf
jamaisfiih
NyanHeavyBR
felipehobs1
jamaisfiih
PatifeCraft
Callyde Jr
Zecandy
Ronnisz
DUT
recagonlei
Phph09
Phph09
jamaisfiih
Josivaldo Augusto
BRGC
MRX
recagonlei
recagonlei
sabbath
recagonlei
recagonlei
luiz12345
dstaroski
rafaelllsd
recagonlei
rafaelllsd
recagonlei
recagonlei
recagonlei
recagonlei
PauloFR
PauloFR
PauloFR
Diego Felix
ronito
ronito
Phph09
recagonlei
jamaisfiih
MRX
dstaroski
dstaroski
rafaelllsd
ronito
Phph09
Unidade3d5
AnderGames
Phph09
Giwn
DUT
Zecandy
Callyde Jr
natanael.olimpio
natanael.olimpio
Jonny
recagonlei
stratengine
Phph09
felipehobs1
Unoog
HPGBR
felipehobs1
rafaelllsd
PatifeCraft
rafaelllsd
Phph09
Phph09
Encracker
dimmuo
Encracker
Unidade3d5
BRGC
Callyde Jr
Phph09
raulframos
Callyde Jr
GameLACK
Fagner
niovery
BRGC
Dom3000
fabriciorsz34
PatifeCraft
Dom3000
Arqueiro Deckster
Phph09
Phph09
richardson
felipehobs1
joabr
Phph09
DUT

[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 : 681
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 : 1178
REPUTAÇÃO : 244
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 : 1281
REPUTAÇÃO : 125
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 : 681
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