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
Paths no Unity
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?
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?
- bruzin123456
- Novato
- Reações: 0
- Mensagens: 6
Re: Paths no Unity Tópico resolvido
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!
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!
- Denis Lemos
- Membro
- Reações: 0
- Mensagens: 49
-
Re: Paths no Unity
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.
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.
- bruzin123456
- Novato
- Reações: 0
- Mensagens: 6
Re: Paths no Unity
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.
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.
Re: Paths no Unity
Valeu!
Como ainda não pretendo comercializar os jogos, vou experimentar a asset free. Mas vou dar uma olhada em todas!
Muito obrigado!
Como ainda não pretendo comercializar os jogos, vou experimentar a asset free. Mas vou dar uma olhada em todas!
Muito obrigado!
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante