Obrigado por visitar a The Game Makers Brasil 😁 Use o fórum de Dúvidas para fazer perguntas. Se está em busca de aprender dê uma olhada nos tutoriais.

Paths no Unity Tópico resolvido

Perguntas? A comunidade te ajuda a resolver.
Avatar do usuário
saim
Membro
Membro
Reações: 0
Mensagens: 20
Localização: BH - Minas

Paths no Unity

Mensagem por saim » Ter Dez 20, 2016 9:09 am

Olá. Sou usuário do Game Maker a algum tempo e estou tentando adaptar alguns jogos meus pro Unity.
Uma das facilidades do GM é o uso de paths, que não está tão óbvio, no Unity. Não tem aquelas funções built-in nem o editor de paths tão bacana...
Bom, alguém saberia criar e utilizar um path no Unity? Se não der pra ser com tantas opções quanto no GM, pelo menos um path de velocidade fixa (ou seja, a velocidade seria definida apenas pelo objeto que percorre o path), podendo o objeto ser alinhado a ele enquanto percorre o caminho?

Avatar do usuário
bruzin123456
Novato
Novato
Reações: 0
Mensagens: 6

Re: Paths no Unity  Tópico resolvido

Mensagem por bruzin123456 » Ter Dez 20, 2016 6:37 pm

A forma mais simples de resolver o problema seria criar um path linear... Nesse caso você simplesmente pega uma lista de Vetores(pontos). Então simplesmente faça o objeto se mover de um ponto ao próximo usando Vector.MoveTowards.

Agora se você quer uma solução mais sofisticada e que possa usar curvas irá dar no minimo 10 vezes mais trabalho, não vou escrever um tutorial mais vou enumerar o que seu algoritmo necessitaria para funcionar corretamente;

1-) Colecionar os Pontos  para formar o caminho;

2-)  Utilizar curvas de Bezier para interpolar uma curva entre os pontos, curvas de bezier de grau muito alto consomem muito desempenho então a melhor opção são usar curvas quadráticas e separar o caminhos em diversos trechos de 3 pontos;

3-) Curvas de Bezier são dependentes de t(tempo), então você sera apenas capaz definir o tempo que o objeto demorará para percorrer o percurso. Para o objeto percorrer o trecho à velocidade constante primeiro você calcula a distancia do trajeto usando Comprimento de Curva(É uma integral, se você procurar consegue encontrar ja resolvida). E então divide a velocidade desejada  pela distância do trajeto, então você terá o tempo necessário que o objeto deve percorrer o caminho.

4-) Para que o objeto esteja rotacionado para a posição que está se movimentando você deve Derivar a função de Bezier para obter um vetor tangente, os ângulos desse vetor será a rotação do o objeto.

5-) Para ter um feedback visual no editor e prever como seria o caminho você terá que usar OnDrawGizmos, para desenhar a curva e os pontos.

* *Essa e uma de muitas soluções, existem outros métodos de interpolar curvas, porém curvas de Bezier são bem utilizados em computação grafica devido a eficiência.

Fazer tudo isso é um tanto trabalhoso, se você não tem o tempo ou a paciência você pode procurar por alguma solução já pronta no Asset Store!

Avatar do usuário
Denis Lemos
Membro
Membro
Reações: 0
Mensagens: 49

Re: Paths no Unity

Mensagem por Denis Lemos » Qua Dez 21, 2016 9:24 am

A Unity não tem essa funcionalidade, então você deve criar o seu próprio sistema. Caso seja apenas para estudo, sugiro que pesquise e tente criar por si próprio, mas se for para projetos comerciais vale mais a pena comprar um sistema já pronto na Asset Store, isso reduz o tempo de desenvolvimento. Tem muitos pacotes desse tipo na loja da Unity, mas eu conheço um que me parece ser o melhor.

PhatMagic: Esse parece ser o melhor sistema de Paths que eu vi na asset Store, ele custa $20 o que fica um pouco caro com o preço do dólar, mas você precisa comprar apenas uma vez e pode usar em todos os seus futuros jogos. Se for jogos comerciais vale muito o investimento.

Simple Waypoint System: Este está na promoção por tempo limitado custando $7,50. Embora parece mais simples, tem muito mais opções do que o sistema de path do GM.

Avatar do usuário
bruzin123456
Novato
Novato
Reações: 0
Mensagens: 6

Re: Paths no Unity

Mensagem por bruzin123456 » Qua Dez 21, 2016 9:42 am

Eu encontrei uma solução free no asset store não cheguei a testar mas parece bom : Itwent

E o passo 3 que eu citei na minha explicação está incorreto, não existe solução analítica para curvas de Bezier(Quadrática ou superior), é melhor usar uma aproximação.

Avatar do usuário
saim
Membro
Membro
Reações: 0
Mensagens: 20
Localização: BH - Minas

Re: Paths no Unity

Mensagem por saim » Qua Dez 21, 2016 4:54 pm

Valeu!
Como ainda não pretendo comercializar os jogos, vou experimentar a asset free. Mas vou dar uma olhada em todas!
Muito obrigado!

Avatar do usuário
rluders
Novato
Novato
Reações: 0
Mensagens: 9

Re: Paths no Unity

Mensagem por rluders » Seg Dez 26, 2016 3:14 pm

A Unity tem uma função chamada NavMesh que pode ajudar.
Imagem

Curta a página Unity Brasil no Facebook:
fb.me/unitybrasil

Trancado

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 4 visitantes