Dúvida quando a interferência de uma colisão em um sistema de chute e passe
2 participantes
Página 1 de 1
Dúvida quando a interferência de uma colisão em um sistema de chute e passe
Boa noite, venho trabalhando em um protótipo de um jogo de futebol. Minha intenção é construir algo mais próximo da realidade, devido a isso, acredito que mesmo estando em fase bem inicial, eu já deva desenvolver os elementos do game levando em conta a física da Unity no jogo. Atualmente, meu desenvolvimento está focado na IA do jogo, a ideia inicialmente é fazer partidas de IA vs IA.
As poucas partes que eu consegui desenvolver até agora se baseiam inteiramente nas colisões, rigidbodies e física simulada da Unity, o que eleva o desafio para mim que não sou um programador experiente. Por exemplo, eu não altero a posição da bola manualmente via código em praticamente nenhum momento, mas sim mando valores de força que são aplicados pelo método AddForce() conforme as colisões do jogador com a bola. Nem sei se este seria o jeito mais viável ou correto de desenvolver o que eu desejo, apenas acho que estou indo na direção certa.
Os problemas começaram a aparecer quando eu tento enviar a bola para direções específicas, por exemplo em um passe. Após normalizar a direção do passe eu comecei a notar que a bola nunca ia na direção correta, apresentando sempre uma leve distorção, então pensei que tinha feito a normalização da forma errada, porém utilizando um Debug.Ray e inserindo o vetor normalizado como direção do raio eu pude ver que a direção estava correta. Após alguns dias travado nisso, uma sugestão no fórum da Unity resolveu o mistério. Ao remover o jogador passador da cena e testar o passe diretamente, sem colisão alguma ocorrendo entre bola e jogador, a bola seguia perfeitamente na direção especificada. Obviamente (não pareceu tão óbvio enquanto eu estava quebrando a cabeça), a colisão entre o player e a bola em si já acarreta em uma transmissão de força, mesmo que muito pequena, que é a causa da distorção da direção. Mesmo tendo descoberto isso, não consigo fazer com a que a bola siga para a direção desejado. Já realizei alguns testes, porém isso está claramente acima do meu conhecimento atual.
Tentei ser o mais claro e sucinto possível, mesmo assim o post ficou meio grande. Alguém têm alguma sugestão para minha situação?
Posso inserir trechos dos meus códigos e screens caso a situação não tenha ficado tão clara.
As poucas partes que eu consegui desenvolver até agora se baseiam inteiramente nas colisões, rigidbodies e física simulada da Unity, o que eleva o desafio para mim que não sou um programador experiente. Por exemplo, eu não altero a posição da bola manualmente via código em praticamente nenhum momento, mas sim mando valores de força que são aplicados pelo método AddForce() conforme as colisões do jogador com a bola. Nem sei se este seria o jeito mais viável ou correto de desenvolver o que eu desejo, apenas acho que estou indo na direção certa.
Os problemas começaram a aparecer quando eu tento enviar a bola para direções específicas, por exemplo em um passe. Após normalizar a direção do passe eu comecei a notar que a bola nunca ia na direção correta, apresentando sempre uma leve distorção, então pensei que tinha feito a normalização da forma errada, porém utilizando um Debug.Ray e inserindo o vetor normalizado como direção do raio eu pude ver que a direção estava correta. Após alguns dias travado nisso, uma sugestão no fórum da Unity resolveu o mistério. Ao remover o jogador passador da cena e testar o passe diretamente, sem colisão alguma ocorrendo entre bola e jogador, a bola seguia perfeitamente na direção especificada. Obviamente (não pareceu tão óbvio enquanto eu estava quebrando a cabeça), a colisão entre o player e a bola em si já acarreta em uma transmissão de força, mesmo que muito pequena, que é a causa da distorção da direção. Mesmo tendo descoberto isso, não consigo fazer com a que a bola siga para a direção desejado. Já realizei alguns testes, porém isso está claramente acima do meu conhecimento atual.
Tentei ser o mais claro e sucinto possível, mesmo assim o post ficou meio grande. Alguém têm alguma sugestão para minha situação?
Posso inserir trechos dos meus códigos e screens caso a situação não tenha ficado tão clara.
Re: Dúvida quando a interferência de uma colisão em um sistema de chute e passe
Tenho um projeto de jogo de futebol estacionado, pois na época em que comecei não tínhamos physics scenes.
Creio que você já tenha pensado nisso, mas pra ficar um pouco mais preciso, acredito que você precise prever onde o jogador que vai receber o passe vai estar quando você der um passe em profundidade por exemplo.
Voltando a questão, no frame do passe, eu tentaria colocar a bola um pouco a frente (fora da área de colisão do jogador) na hora de fazer o passe.
Ou ignorar a colisão entre o jogador e a bola até que a bola saia da área de colisão com o player (Physics.IgnoreCollision).
Só consegui pensar nestas duas alternativas no momento.
PS: Seria lindo ver um jogo de futebol na Unity!
Creio que você já tenha pensado nisso, mas pra ficar um pouco mais preciso, acredito que você precise prever onde o jogador que vai receber o passe vai estar quando você der um passe em profundidade por exemplo.
Voltando a questão, no frame do passe, eu tentaria colocar a bola um pouco a frente (fora da área de colisão do jogador) na hora de fazer o passe.
Ou ignorar a colisão entre o jogador e a bola até que a bola saia da área de colisão com o player (Physics.IgnoreCollision).
Só consegui pensar nestas duas alternativas no momento.
PS: Seria lindo ver um jogo de futebol na Unity!
Re: Dúvida quando a interferência de uma colisão em um sistema de chute e passe
artplayer escreveu:Tenho um projeto de jogo de futebol estacionado, pois na época em que comecei não tínhamos physics scenes.
Creio que você já tenha pensado nisso, mas pra ficar um pouco mais preciso, acredito que você precise prever onde o jogador que vai receber o passe vai estar quando você der um passe em profundidade por exemplo.
Voltando a questão, no frame do passe, eu tentaria colocar a bola um pouco a frente (fora da área de colisão do jogador) na hora de fazer o passe.
Ou ignorar a colisão entre o jogador e a bola até que a bola saia da área de colisão com o player (Physics.IgnoreCollision).
Só consegui pensar nestas duas alternativas no momento.
PS: Seria lindo ver um jogo de futebol na Unity!
Jogos de esportes mais realistas são difíceis de fazer eu acho, estou colocando praticamente todo meu tempo livre nisso porque adoro futebol e desenvolvimento de jogos, mesmo assim meus jogadores são apenas cubos no momento. Quanto ao posicionamento do recebedor do passe, ainda nem me preocupei com verificar o ponto futuro aonde o jogador vai estar, no meu protótipo atual o recebedor está parado, primeiro quero tentar fazer com o passe vá certo para uma direção fixa, depois vou tentar evoluir daí.
Muito obrigado pelas sugestões, vou ver se consigo implementar uma delas na minha estrutura atual.
Não estou tão pretensioso quanto a finalização desse projeto, porque sei que têm um universo de coisas para serem feitas, mas vamos ver aonde eu consigo chegar.
Re: Dúvida quando a interferência de uma colisão em um sistema de chute e passe
De qualquer maneira, acho que o seu melhor aliado vão ser as physics scenes. É um segmento que me enche os olhos, mas infelizmente não tenho tempo pra dedicar a um projeto como esse. Eu enho alguns tópicos antigos aqui sobre o projeto que eu estava desenvolvendo.
Sucesso e qualquer coisa posta aí sobre o andamento.
Abraços!
Sucesso e qualquer coisa posta aí sobre o andamento.
Abraços!
Re: Dúvida quando a interferência de uma colisão em um sistema de chute e passe
artplayer escreveu:De qualquer maneira, acho que o seu melhor aliado vão ser as physics scenes. É um segmento que me enche os olhos, mas infelizmente não tenho tempo pra dedicar a um projeto como esse. Eu enho alguns tópicos antigos aqui sobre o projeto que eu estava desenvolvendo.
Sucesso e qualquer coisa posta aí sobre o andamento.
Abraços!
Obrigado pela ajuda, o reposicionamento manual da bola funcionou. Apenas implementei um pequeno método de reposicionamento setando o kinematic da bola como true, colocando ela levemente longe do player e fazendo o kinematic false novamente antes do cálculo que normaliza o vetor de direção. Não sei se isso seria a coisa mais correta a ser feita, mas fazer algo dependendo inteiramente do sistema de física da Unity talvez não seja viável, pelo menos funcionou, o que em um primeiro momento é que o importa. Nunca ouvi falar de physics scenes, mas certamente vou dar uma olhada nelas. Mas antes preciso concluir a IA básica do protótipo, algo que não está sendo muito fácil para mim, vou continuando aqui. Valeu..
Tópicos semelhantes
» Ajuda com sistema de colisão
» Como se faz para quando o personagem pular e colidir a um terreno,faça um som de colisão?
» Sistema CFD com Unity: Simular partículas com colisão em túnel de vento
» Duvida - Colisão
» Duvida com a colisao
» Como se faz para quando o personagem pular e colidir a um terreno,faça um som de colisão?
» Sistema CFD com Unity: Simular partículas com colisão em túnel de vento
» Duvida - Colisão
» Duvida com a colisao
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos