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 :D
TÓPICOS RECENTES:
Tópico:
Postado em:
Postado por:
Erro com Post Processing e com canvas
PlayerPrefs??
Modelo importado para Unity com os Pés tortos .
Animação com mão fechada
[TUTORIAL] Acessar nomes de arquivos diretamente da pasta
bloco de notas
[Duvida] Script de mover objeto usando o RigidBody
Quero fazer um jogo plataforma 2.5d em curva (como Kirby 64), mas não sei.
[TUTORIAL] Criando um simples Multiplayer [UNITY 5]
Reproduzir animação com tecla?
[TUTORIAL] Mirar em jogo de fps igual COD, Battlefield e outros
[TUTORIAL] Ciclo de dia e noite com sync no multiplayer
[TUTORIAL] Salvar dados com playerprefs facilmente.
editor de imagem para perfil
Rotacionar player no eixo Y da camera
erro com carregamento de dados
facebook login
Quando o inimigo ataca todos os inimigos ativam a animação
[TUTORIAL] Como desenhar no Unity.
Objeto ter a mesma rotação que outro em apenas um eixo
Sistema De Marchas para Veiculos
[RESOLVIDO] Pegar o meu ping/latencia (Unet)
Alguém pode me dizer como usar as texturas,Normal map,Occlusion...
Começar em Game Design / Design
Material rosa no HDRender Pipeline como resolvo isso
Instanciate objeto lado a lado
[Duvida] movimentação de nave
[RESOLVIDO] Usando o SetActive para reativar um GameObject, ajuda!
Flamehead MMORPG Indie
erro de java
[TUTORIAL] Desenvolvendo um jogo de quebra-cabeças
[RESOLVIDO] Grafico quadriculado?
duvida com asset store
[TUTORIAL] Assinando um Apk e dicas de instalação e configurações
Como fazer um sistema para conectar objetos?
[RESOLVIDO] Unity sem som
Erro ao tentar compilar para Android
Como iniciar uma animação atraves de um clique em um objeto?
Error ao Gerar a KeyStore do Apk Android
Participe da Game Jam - Jaaj do canal Amdré Young!
[JOGO MOBILE] Defeat the Illuminatis
Alguém sabe como posso aplicar a movimentação agachado?!
Script de Spawn Aleatório
Sugestão para o Fórum - "Área Avançada"
(NavMesh) Objeto "Deslizando"
[____APOIE O FÓRUM E O CANAL E GANHE RECOMPENSAS____]
Alguém conhece algum bom tutorial para aprender Algoritmo genético em C# ?
Mudar cor de area
tela branca ao iniciar videoplayer
COMO FAÇO O SISTEMA DE CHUVA ESTILO ETS2 COM GOTAS NO PARA BRISA?
COMO FAZER SISTEMA DE BHOP ESTILO CS ? (BUNNY HOP)
A Arma mudar de posição de acordo coma movimentação
[PEDIDO] Rig Simples para esse modelo.
[TUTORIAL] Acionar a vibração do dispositivo
[TUTORIAL] CONFIGURANDO O UNITY PARA COMPILAR PARA ANDROID
Animação no movimento do mouse
[___COMO UTILIZAR O FÓRUM___] Principais botões e suas funções
[RESOLVIDO] Colisor
[TUTORIAL] Unity 5 - Wheel Collider, veículos, suspensão realista.
[RESOLVIDO] Como faço um limitador de tiros por distância?
[RESOLVIDO] Mudar a proporção
[RESOLVIDO] Vuforia bug
Objetos (itens) pegos na cena anterior não são destruídos quando volta para ela
Codigo em Python para colocar Imagens em POT (Power Of Two) e .exe
[RESOLVIDO] Error depois de copilar para Android?
[JOGO ANDROID] PLANET DEFENSE
Sistema de IAP Paypal ou parecido
[RESOLVIDO] JOGO SAINDO (ANDROID)
{Equipe} Programador que tenha interesse de participar de uma JAM.
Como fazer Sistema Dia e Noite Segui o sistema de Hora
fazer script pegar arquivo de som, porem o som sera colocado apos a build...
[RESOLVIDO] Mover Plataforma
Formação de Equipe ( Favela Killer)
[TUTORIAL] Escolher a quantos FPS (fixos) o seu jogo deverá rodar.
[Devlog] Lost in the world (1.2_beta)
AJUDA COM SCRIPT DE SISTEMA QTE
Tilesets de Floresta em Pixel Art
[RESOLVIDO] Sistema de login
(UNITY 3D) Mesh Splitter - Como separar uma Mesh em multiplos Game Objects?
Como fazer um sistema de compra de itens?
[JOGO] Tetris em Unity - Para tutorial
Modulo Xbox One
[RESOLVIDO] Pegar e Jogar armas no chão (estilo CS 1.6)
[RESOLVIDO] Como apagar parte da grama do terreno para fazer uma calçada?
[RESOLVIDO] Erro ao Copilar: Bug no personagem.
[Opinião] 2d ou 3d?
Como é feito esse efeito?
Teaser 2 do meu jogo
Shader com efeito de dissolução
[TUTORIAL] Geração de Mesh procedural (estilo Minecraft)
[RESOLVIDO] Erro no Baú
Problema ao mudar sprite entre objetos por conta do uso de joystick
Unity 3d TELA PRETA
[Duvida] Como chamar uma void criada por mim, apenas em determinados momentos.
Corcle (Mobile) - Um jogo simples com um nome estranho.
Bomb Battle Jogo Online Em Desenvolvimento
Ajuda com Visual Studio e MonoDevelop
[RESOLVIDO] Bug o material fica preto
[RESOLVIDO] Error para copilar para Android?
Hoje à(s) 7:31 am
Hoje à(s) 3:40 am
Hoje à(s) 1:22 am
Hoje à(s) 1:15 am
Ontem à(s) 10:33 pm
Ontem à(s) 10:30 pm
Ontem à(s) 8:58 pm
Ontem à(s) 6:25 pm
Ontem à(s) 6:05 pm
Ontem à(s) 6:02 pm
Ontem à(s) 12:02 pm
Ontem à(s) 11:58 am
Ontem à(s) 5:48 am
Seg Jan 21, 2019 12:04 pm
Seg Jan 21, 2019 11:57 am
Seg Jan 21, 2019 10:51 am
Seg Jan 21, 2019 10:46 am
Dom Jan 20, 2019 6:32 pm
Dom Jan 20, 2019 5:33 pm
Dom Jan 20, 2019 1:46 pm
Dom Jan 20, 2019 4:26 am
Sab Jan 19, 2019 4:48 pm
Sab Jan 19, 2019 8:26 am
Sab Jan 19, 2019 3:45 am
Qui Jan 17, 2019 9:23 pm
Qui Jan 17, 2019 7:10 pm
Qui Jan 17, 2019 2:24 am
Qui Jan 17, 2019 1:48 am
Qui Jan 17, 2019 1:28 am
Qua Jan 16, 2019 6:28 pm
Qua Jan 16, 2019 11:35 am
Ter Jan 15, 2019 10:57 pm
Ter Jan 15, 2019 9:51 pm
Ter Jan 15, 2019 8:20 pm
Ter Jan 15, 2019 5:22 pm
Ter Jan 15, 2019 4:09 pm
Ter Jan 15, 2019 3:50 pm
Ter Jan 15, 2019 2:06 pm
Ter Jan 15, 2019 1:50 pm
Ter Jan 15, 2019 12:26 pm
Ter Jan 15, 2019 10:49 am
Ter Jan 15, 2019 3:27 am
Ter Jan 15, 2019 3:23 am
Ter Jan 15, 2019 3:19 am
Ter Jan 15, 2019 3:15 am
Ter Jan 15, 2019 3:13 am
Ter Jan 15, 2019 3:06 am
Ter Jan 15, 2019 3:04 am
Ter Jan 15, 2019 2:58 am
Ter Jan 15, 2019 2:47 am
Ter Jan 15, 2019 2:39 am
Seg Jan 14, 2019 6:58 pm
Seg Jan 14, 2019 5:54 pm
Seg Jan 14, 2019 2:20 pm
Seg Jan 14, 2019 7:28 am
Dom Jan 13, 2019 6:19 pm
Dom Jan 13, 2019 9:52 am
Sab Jan 12, 2019 8:10 pm
Sab Jan 12, 2019 4:08 pm
Sab Jan 12, 2019 2:41 pm
Sex Jan 11, 2019 10:28 pm
Sex Jan 11, 2019 8:41 pm
Sex Jan 11, 2019 8:31 pm
Sex Jan 11, 2019 12:11 pm
Sex Jan 11, 2019 7:33 am
Sex Jan 11, 2019 2:18 am
Qui Jan 10, 2019 1:04 pm
Qui Jan 10, 2019 12:58 pm
Qui Jan 10, 2019 12:50 pm
Qui Jan 10, 2019 9:23 am
Qua Jan 09, 2019 9:33 pm
Qua Jan 09, 2019 2:47 am
Qua Jan 09, 2019 12:17 am
Qua Jan 09, 2019 12:02 am
Ter Jan 08, 2019 10:24 pm
Ter Jan 08, 2019 5:00 pm
Ter Jan 08, 2019 3:51 pm
Seg Jan 07, 2019 10:42 pm
Seg Jan 07, 2019 10:26 am
Seg Jan 07, 2019 12:43 am
Dom Jan 06, 2019 5:16 pm
Dom Jan 06, 2019 2:22 pm
Sex Jan 04, 2019 3:15 pm
Sex Jan 04, 2019 2:29 pm
Sex Jan 04, 2019 2:25 pm
Sex Jan 04, 2019 12:38 pm
Qui Jan 03, 2019 12:35 am
Qua Jan 02, 2019 9:46 pm
Qua Jan 02, 2019 8:56 pm
Qua Jan 02, 2019 6:48 pm
Qua Jan 02, 2019 5:32 pm
Qua Jan 02, 2019 2:34 pm
Qua Jan 02, 2019 11:17 am
Seg Dez 31, 2018 6:23 pm
Seg Dez 31, 2018 5:53 pm
Seg Dez 31, 2018 11:29 am
Seg Dez 31, 2018 12:26 am
Dom Dez 30, 2018 9:45 pm
Dom Dez 30, 2018 8:53 pm
Zack2
speedluk
artplayer
artplayer
DuViDoSo
richerd
NKKF
RGMBrasil
mafipt
heitor
dstaroski
dstaroski
rafaelllsd
Zack2
francisco barroso
Zack2
Zack2
Phph09
vitorhugo
Daniel Pires da Silva
Madness
luiz12345
glauco
Joshuaaaa
MarcosSchultz
MayLeone
MarcosSchultz
bielTuvel
Skurb
zZAndersonZz
MayLeone
heitor
MarcosSchultz
rafaelllsd
henriquegames501
Daniel Dória
dstaroski
dstaroski
Duarte
NKKF
dstaroski
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
dstaroski
BRGC
Callyde Jr
Callyde Jr
TecnoGames
dstaroski
MayLeone
NKKF
bielTuvel
Priste_Hell
Callyde Jr
Wanderli
Andeton
Callyde Jr
MateusPignatti
Callyde Jr
NoobZ
AladoAlan
francisco barroso
luiz12345
speedluk
zeca urubu
Rafal
NKKF
Diego Felix
ismarspn
Zack2
Dom3000
henriquegames501
conceptfac
guimaraf
lhm
EricKBMS
5pntozero
Daniel Dória
Madness
Patrick
AnderGames
kalango studios games
EricKBMS
francisco barroso
dstaroski
MayLeone
PauloFR
glauco
francisco barroso
Dom3000
Callyde Jr

(Dúvida) Encontrar o objeto mais próximo partindo do ponto inicial ao final.

Ir em baixo

DÚVIDA (Dúvida) Encontrar o objeto mais próximo partindo do ponto inicial ao final.

Mensagem por rafaelllsd em Seg Out 15, 2018 11:36 pm

Olá, estou fazendo um sistema de pathfinding 2D baseado em checkpoints. O sistema de editor para criar o cenário com os checkpoints etá praticamente feito, porém enfrento dificuldades em fazer o "Navedador (objeto que seguirá entre os checkpoints)". Minha lógica seria  calcular a distância entre o ponto atual (A) e o ponto final (Z), e depois calcular qual checkpoint está mais próximo do (A) porém com menor distancia do mesmo que no caso seria o (B):

Código:
   void CalcularProximoPonto () {
      for (int x = 0; x < checkpoints.Count; x++) {
         distancia = Vector2.Distance (checkpoints[atual], checkpoints [final]);
         float distanciaGlobal = Vector2.Distance (checkpoints [x], checkpoints [final]);
         if ((distanciaGlobal) < distancia && x != final) {
             atual = x;
         }
      }
   }
Nesta situação ele pega o checkpoint (Y) e não o checkpoint (B), usaria um break no "for" para ele pegar o objeto (B), porém não funcionaria quando eu alterasse o destino final.

Dúvida
rafaelllsd
rafaelllsd
ProgramadorMaster

Masculino PONTOS : 2957
REPUTAÇÃO : 434
Idade : 18
Áreas de atuação : Unity, Audacity, Blender, Gimp, C#, JS, HTML5.

Respeito as regras :

Ver perfil do usuário

Voltar ao Topo Ir em baixo

DÚVIDA Re: (Dúvida) Encontrar o objeto mais próximo partindo do ponto inicial ao final.

Mensagem por MarcosSchultz em Qua Out 17, 2018 5:13 pm

Só queria dar um Up nesse tópico, por que eu não faço a menor ideia de como resolver
MarcosSchultz
MarcosSchultz
Administrador

Masculino PONTOS : 61342
REPUTAÇÃO : 2138
Idade : 22
Áreas de atuação : Administrador do fórum
Respeito as regras :

Ver perfil do usuário http://www.schultzgames.com

Voltar ao Topo Ir em baixo

DÚVIDA Re: (Dúvida) Encontrar o objeto mais próximo partindo do ponto inicial ao final.

Mensagem por rafaelllsd em Sab Out 20, 2018 5:16 pm

up
rafaelllsd
rafaelllsd
ProgramadorMaster

Masculino PONTOS : 2957
REPUTAÇÃO : 434
Idade : 18
Áreas de atuação : Unity, Audacity, Blender, Gimp, C#, JS, HTML5.

Respeito as regras :

Ver perfil do usuário

Voltar ao Topo Ir em baixo

DÚVIDA Re: (Dúvida) Encontrar o objeto mais próximo partindo do ponto inicial ao final.

Mensagem por Matrirxp em Dom Out 21, 2018 3:51 pm

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

public class ObjetoProximo : MonoBehaviour {

    public GameObject[] CheckPoints;
    public float[] Dist;
    public GameObject Player;

    public GameObject CheckPointProximo;

    //Valores
    public float Menor;
    public float Maior;

    void Start()
    {

        Dist = new float[CheckPoints.Length]; //Ajusta o tamanho da array de acordo com o numero de CheckPoints 
    }

    void Update()
    {



        for (int i = 0; i < CheckPoints.Length; i++)
        { //Pegar a menor posi


            Dist[i] = Vector3.Distance(CheckPoints[i].transform.position, Player.transform.position);

            if (i == 0)
            {
                Maior = Dist[i];
                Menor = Dist[i];
            }

            if (Dist[i] > Maior)
            {
                Maior = Dist[i];
            }
            if (Dist[i] < Menor)
            {
                Menor = Dist[i];
                CheckPointProximo = CheckPoints[i];
            }

        }


    }

}


Tenta isso
Matrirxp
Matrirxp
ProgramadorMaster

Masculino PONTOS : 1164
REPUTAÇÃO : 66
Idade : 16
Áreas de atuação : Unity: Programação JavaScript e C#.
Programação: Python, C#, Java, HTML5,CSS.

Respeito as regras :

Ver perfil do usuário

Voltar ao Topo Ir em baixo

DÚVIDA Re: (Dúvida) Encontrar o objeto mais próximo partindo do ponto inicial ao final.

Mensagem por rafaelllsd em Dom Out 21, 2018 7:09 pm

@Matrirxp escreveu:
Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ObjetoProximo : MonoBehaviour {

    public GameObject[] CheckPoints;
    public float[] Dist;
    public GameObject Player;

    public GameObject CheckPointProximo;

    //Valores
    public float Menor;
    public float Maior;

    void Start()
    {

        Dist = new float[CheckPoints.Length]; //Ajusta o tamanho da array de acordo com o numero de CheckPoints 
    }

    void Update()
    {



        for (int i = 0; i < CheckPoints.Length; i++)
        { //Pegar a menor posi


            Dist[i] = Vector3.Distance(CheckPoints[i].transform.position, Player.transform.position);

            if (i == 0)
            {
                Maior = Dist[i];
                Menor = Dist[i];
            }

            if (Dist[i] > Maior)
            {
                Maior = Dist[i];
            }
            if (Dist[i] < Menor)
            {
                Menor = Dist[i];
                CheckPointProximo = CheckPoints[i];
            }

        }


    }

}


Tenta isso
Não deu certo :/, mas me deu uma idéia, vlw.
rafaelllsd
rafaelllsd
ProgramadorMaster

Masculino PONTOS : 2957
REPUTAÇÃO : 434
Idade : 18
Áreas de atuação : Unity, Audacity, Blender, Gimp, C#, JS, HTML5.

Respeito as regras :

Ver perfil do usuário

Voltar ao Topo Ir em baixo

DÚVIDA Re: (Dúvida) Encontrar o objeto mais próximo partindo do ponto inicial ao final.

Mensagem por rafaelllsd em Dom Out 21, 2018 10:49 pm

Eu achei um meio resultado:
Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Destinador : MonoBehaviour {

 public MapEditor mapaDeCheckpoints;
 public int posicaoAtual;
 public int posicaoFinal;
 private int posicaoAnterior;
 private int proximoPonto;
 private float distanciaAtual;
 public float velocidade = 5;
 public bool podeMover;

 [Space(20)]
 public List<Vector3> checkpoints = new List<Vector3>();
 public List<float> pontosSecundarios = new List<float> ();

 void Awake () {
 checkpoints = mapaDeCheckpoints.checkpoints;

 }

 void Update () {
 if (transform.position != checkpoints[posicaoAtual] && podeMover) {
 if (proximoPonto == 0) {
 transform.position = Vector3.MoveTowards(transform.position, checkpoints [posicaoAtual], velocidade * Time.deltaTime);
 } else {
 transform.position = Vector3.MoveTowards(transform.position, checkpoints [proximoPonto], velocidade * Time.deltaTime);
 }
 }

 if (podeMover) {
 if (transform.position == checkpoints [posicaoAtual] && proximoPonto == 0) {
 ProcurarPontoPrimario ();
 } else if (proximoPonto != 0) {
 if (transform.position == checkpoints [proximoPonto]) {
 ProcurarPontoPrimario ();
 }
 }
 }

 if (Input.GetKeyDown(KeyCode.C)) {
 ResetarResultados ();
 }
 }

 void ProcurarPontoPrimario () {
 /* Esta void ela é responsavel por pegar os pontos inícias que estão mais próximos
 * do ponto de partida, ou seja, praticamente ela irá pegar somente os pontos que
 * estão paralelo, ou seja, lado a lado
 */
 for (int x = 0; x < checkpoints.Count; x++) {
 if (x != posicaoAtual) {
 float distanceCP = Vector2.Distance (checkpoints [posicaoAtual], checkpoints [posicaoFinal]); //Pega a distância entre o ponto atual e final
 float distanceX = Vector2.Distance (checkpoints [x], checkpoints [posicaoFinal]); //Pega a distância entre cada ponto em relação a posição final
 if (distanceX < distanceCP) { //Se o ponto[x] for menor que a distancia entre a minha posição e a posição final ele pega este valor
 posicaoAnterior = posicaoAtual;
 posicaoAtual = x; //Aqui ele atribui a posição atual ao ponto encontrado
 VerificarIntegridade ();
 distanciaAtual = distanceX;
 break;
 }
 }
 }
 }
 void VerificarIntegridade () {
 /* Aqui ele vai verificar se o ponto encontrado da void anterior é realmente o mais próximo entre o ponto anterior
 * e o ponto final
 */
 for (int i = 0; i < checkpoints.Count; i++) {
 if (i != posicaoAnterior && i != posicaoAtual) {
 float distancePC = Vector2.Distance (checkpoints [posicaoAtual], checkpoints [posicaoAnterior]);
 float distanceI = Vector2.Distance (checkpoints [i], checkpoints [posicaoAnterior]);
 if (distanceI < distancePC) {
 Debug.Log(i + " PONTO ENCONTRADO: " + checkpoints[i] + " DISTANCIA: >>>>>>>>> " + distanceI);
 pontosSecundarios.Add (distanceI); //Caso o ponto encontrado não for o menor ele adiciona todos os pontos mais próximos entre o ponto atual e o ponto final em uma lista.
 UltimaChecagem ();
 }
 }
 }
 }

 void UltimaChecagem () {
 /* Aqui é onde ocorre a ultima verificação, onde ele verifica qual desses pontos encontrados qual tem a menor distancia
 */
 for (int i = 0; i < pontosSecundarios.Count; i++) {
 if (pontosSecundarios[i] < distanciaAtual) {
 distanciaAtual = pontosSecundarios [i];
 Debug.Log ("RESULTADO FINAL: " + (i) + " DISTANCIA: " + pontosSecundarios [i] + " PONTO ORIGINAL: " + (posicaoAtual + (i + 1)));
 proximoPonto = posicaoAtual + (i + 1); //Após a verificação o ponto mais próximo encontrado sera o proximo local a ir
 }
 }
 }

 void ResetarResultados () { //É utilizado quando chega ao ponto final.
 pontosSecundarios.Clear (); //Limpa a lista.
 Debug.Log ("RESULTADOS DELETADOS");
 proximoPonto = 0;
 }
}
Basicamente ele na primeira vez quando vai, ele vai respeitando tudo perfeitamente, porém quando valor final é alterado, buga - se tudo kkkk. HELP!
rafaelllsd
rafaelllsd
ProgramadorMaster

Masculino PONTOS : 2957
REPUTAÇÃO : 434
Idade : 18
Áreas de atuação : Unity, Audacity, Blender, Gimp, C#, JS, HTML5.

Respeito as regras :

Ver perfil do usuário

Voltar ao Topo Ir em baixo

DÚVIDA Re: (Dúvida) Encontrar o objeto mais próximo partindo do ponto inicial ao final.

Mensagem por Matrirxp em Seg Out 22, 2018 9:35 pm

Não entendi muito bem você quer fazer  
Quer que o player percorra todos os checkpoints ????
Matrirxp
Matrirxp
ProgramadorMaster

Masculino PONTOS : 1164
REPUTAÇÃO : 66
Idade : 16
Áreas de atuação : Unity: Programação JavaScript e C#.
Programação: Python, C#, Java, HTML5,CSS.

Respeito as regras :

Ver perfil do usuário

Voltar ao Topo Ir em baixo

DÚVIDA Re: (Dúvida) Encontrar o objeto mais próximo partindo do ponto inicial ao final.

Mensagem por rafaelllsd em Ter Out 23, 2018 12:43 am

@Matrirxp escreveu:Não entendi muito bem você quer fazer  
Quer que o player percorra todos os checkpoints ????
Sim, praticamente é um sistema de pathfinding com checkpoints, ele basicamente escolhe o checkpoint mais proximo de sí em relação ao ponto final e traça um caminho, porém está sendo bem complicado.
rafaelllsd
rafaelllsd
ProgramadorMaster

Masculino PONTOS : 2957
REPUTAÇÃO : 434
Idade : 18
Áreas de atuação : Unity, Audacity, Blender, Gimp, C#, JS, HTML5.

Respeito as regras :

Ver perfil do usuário

Voltar ao Topo Ir em baixo

DÚVIDA Re: (Dúvida) Encontrar o objeto mais próximo partindo do ponto inicial ao final.

Mensagem por Matrirxp em Ter Out 23, 2018 1:01 pm

@rafaelllsd escreveu:
@Matrirxp escreveu:Não entendi muito bem você quer fazer  
Quer que o player percorra todos os checkpoints ????
Sim, praticamente é um sistema de pathfinding com checkpoints, ele basicamente escolhe o checkpoint mais proximo de sí em relação ao ponto final e traça um caminho, porém está sendo bem complicado.
Porque tem que ser em relação ao ponto final?
Quer que ele vá ao ponto final e depois volte ao inicial ??
Matrirxp
Matrirxp
ProgramadorMaster

Masculino PONTOS : 1164
REPUTAÇÃO : 66
Idade : 16
Áreas de atuação : Unity: Programação JavaScript e C#.
Programação: Python, C#, Java, HTML5,CSS.

Respeito as regras :

Ver perfil do usuário

Voltar ao Topo Ir em baixo

DÚVIDA Re: (Dúvida) Encontrar o objeto mais próximo partindo do ponto inicial ao final.

Mensagem por MarcosSchultz em Ter Out 23, 2018 9:08 pm

@Matrirxp escreveu:
@rafaelllsd escreveu:
@Matrirxp escreveu:Não entendi muito bem você quer fazer  
Quer que o player percorra todos os checkpoints ????
Sim, praticamente é um sistema de pathfinding com checkpoints, ele basicamente escolhe o checkpoint mais proximo de sí em relação ao ponto final e traça um caminho, porém está sendo bem complicado.
Porque tem que ser em relação ao ponto final?
Quer que ele vá ao ponto final e depois volte ao inicial ??

Ponto final por que é o 'destino'

Pathfinding é pra escolher a rota mais curta da sua posição atual até o ponto de destino, criando uma lista de checkpoints para o jogador percorrer até o destino.
MarcosSchultz
MarcosSchultz
Administrador

Masculino PONTOS : 61342
REPUTAÇÃO : 2138
Idade : 22
Áreas de atuação : Administrador do fórum
Respeito as regras :

Ver perfil do usuário http://www.schultzgames.com

Voltar ao Topo Ir em baixo

DÚVIDA Re: (Dúvida) Encontrar o objeto mais próximo partindo do ponto inicial ao final.

Mensagem por Matrirxp em Ter Out 23, 2018 9:18 pm

Entendi  Smile
Matrirxp
Matrirxp
ProgramadorMaster

Masculino PONTOS : 1164
REPUTAÇÃO : 66
Idade : 16
Áreas de atuação : Unity: Programação JavaScript e C#.
Programação: Python, C#, Java, HTML5,CSS.

Respeito as regras :

Ver perfil do usuário

Voltar ao Topo Ir em baixo

DÚVIDA Re: (Dúvida) Encontrar o objeto mais próximo partindo do ponto inicial ao final.

Mensagem por Matrirxp em Ter Out 23, 2018 10:16 pm

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

public class Object2 : MonoBehaviour {

    public List<GameObject> CheckPoints = new List<GameObject>();//Checkpoint (Nao colocar o destino aqui)
    public GameObject Destino;//Destino
    float[] Dist;
    public GameObject Player;//Player

    public float Speed;

    //Valores
    float Menor;
    GameObject MenorObjeto;

    float Maior;

    bool Check;
    int Index;

    void Start()
    {

        Dist = new float[CheckPoints.Count]; //Ajusta o tamanho da array de acordo com o numero de CheckPoints 
        Check = true;//Checar CheckPoint

    }

    void Update()
    {


        if (CheckPoints.Count > 1)//Se o tamanho da lista for maior que 1 -> checar lista a procura do checkpoint mais proximo
        {

            if (MenorObjeto == null) //Se a variavel "MenorObjeto" for igual a null --> Verificar Chekpoints novamente (Assim e possivel evitar bugs como o "NullReferenceException")
            {
                Check = true;//Checar CheckPoint
            }

            if (Check == true)//Checar CheckPoint
            {

                for (int i = 0; i < CheckPoints.Count; i++)//Pegar o CheckPoint Mais Proximo
                { 


                    Dist[i] = Vector3.Distance(CheckPoints[i].transform.position, Player.transform.position);

                    if (i == 0)
                    {
                        Maior = Dist[i];
                        Menor = Dist[i];
                    }

                    if (Dist[i] > Maior)
                    {
                        Maior = Dist[i];
                    }
                    if (Dist[i] < Menor)
                    {
                        Menor = Dist[i];
                        MenorObjeto = CheckPoints[i];
                        Index = i;
                    }

                }
                Check = false;
            }
            else
            {
                float DistA = Vector3.Distance(MenorObjeto.transform.position, Player.transform.position);//Verifica a distancia entre o "MenorObjeto" e o "Player"
                float DistB = Vector3.Distance(MenorObjeto.transform.position, Destino.transform.position);//Verifica a distancia entre o "MenorObjeto" e o "Destino"
                float DistC = Vector3.Distance(Player.transform.position, Destino.transform.position);//Verifica a distancia entre o "Player" e o "Destino"

                if (DistB < DistC) //Verifica o Checkpoint escolhido (Evita a escolha de um Checkpoint fora de rota) [Se a distancia entre o "MenorObjeto" e o "Destino" e menor que a distancia entre o "Player" e o "Destino" -> Direcionar player]
                {

                    Player.transform.position = Vector3.MoveTowards(Player.transform.position, MenorObjeto.transform.position, Speed * Time.deltaTime);//Direcionar player ao proximo Checkpoint

                    if (DistA < 3)//Deletar checkpoint quando o player estiver nele 
                    {
                        CheckPoints.RemoveAt(Index);//Remover Checkpoint atual 
                        Index = 0;//Limpar variavel "Index" para uma nova checagem
                        Check = true;//Checar CheckPoint
                    }
                }
                else
                {
                    CheckPoints.RemoveAt(Index);//Remover Checkpoint fora de destino 
                    Index = 0;//Limpar variavel "Index" para uma nova checagem
                    Check = true;//Checar CheckPoint
                }
            }

        }
        else
        {
            Player.transform.position = Vector3.MoveTowards(Player.transform.position, Destino.transform.position, Speed * Time.deltaTime);//Apos passar por todos os checkpoints direcionar player ao destino
        }


    }

}

Acho que agora esta certo !
Matrirxp
Matrirxp
ProgramadorMaster

Masculino PONTOS : 1164
REPUTAÇÃO : 66
Idade : 16
Áreas de atuação : Unity: Programação JavaScript e C#.
Programação: Python, C#, Java, HTML5,CSS.

Respeito as regras :

Ver perfil do usuário

Voltar ao Topo Ir em baixo

DÚVIDA Re: (Dúvida) Encontrar o objeto mais próximo partindo do ponto inicial ao final.

Mensagem por rafaelllsd em Qua Out 24, 2018 8:10 pm

Não deu muito certo :/
https://imgur.com/a/wiOBaqR -> Tive que fazer a alteração de GameObject para vector3 porque a lista é feita de "Vector3", mas acho que não fiz nada de errado, praticamente ele não passa pelos checkpoints ele vai cortando pelo meio. Estou dando uma olhada em sistema de pathdinfing que geram uma "Surface" vou tentar extrair algo dela. Agradeço a ajuda.
rafaelllsd
rafaelllsd
ProgramadorMaster

Masculino PONTOS : 2957
REPUTAÇÃO : 434
Idade : 18
Áreas de atuação : Unity, Audacity, Blender, Gimp, C#, JS, HTML5.

Respeito as regras :

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Voltar ao Topo

- Tópicos similares

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