Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Continua atravessando paredes

Meu personagem ao dar play ele funciona parcialmente a colisão com os prédios, nos zumbis e nos buracos estão funcionando corretamente. Depois de um bom tempo apertando a tecla pra se mover para a direção do objeto(hotel) ele acaba atravessando o mesmo ou caso eu aperte por exemplo uma combinação de direção, SETA PRA CIMA + ESQUERDA OU DIREITA, ele acaba atravessando também.

Meu código está exatamente como na aula!

4 respostas

Oi, Saulo, tudo bem?

Acho que um conjunto de coisas podem ajudar:

  • Você pode aumentar um pouco aquele número de 2.5 para fazer a personagem e o zumbi não se tocar
  • Aumentar a massa da personagem no Rigidbody para algo como 100
  • Aumentar o drag e o linear drag para 1 ou valor próximo assim o personagem desacelera muito mais rápido

Nesse tópico também tem umas dicas sobre mudar como a física se comporta pra melhorar um pouco o jogo. Isso também vai melhorando ao longo dos outros cursos, não se preocupa, esse jogo é um processo. Ao longo dos cursos bugs vão ser encontrados e resolvidos, mudanças de performance serão feitas, vamos melhorar o uso da linguagem. O ponto dele é ir te ajudando a pensar em como fazer um jogo, não ir de cara pra melhor forma de resolver o problema e te dar a base pra você evoluir no futuro.

Olá professor e colegas,

Essa dica do Rigidbody não funcionou para mim. O personagem dá uma paradinha de alguns microsegundos e atravessa.

Eu pediria ao professor que, ao invés de somente explicar como resolver, nos explicasse o porque isso acontece. Porque a solução não está ok para alguns alunos.

Eu conseguir "resolver" parcialmente, aumentando a influência do colisor. Mesmo assim, os objetos são atravessados. O que seria um problema num game finalizado. Vou prossegir dessa forma e depois acompanho aqui a solução proposta e resposta.

Nota: Eu estou usando a última versão do unity.

Abcs

solução!

Oi, Eduardo, a mudança no código proposta no outro tópico linkado aqui não funcionou?

Esse comportamento da física da Unity sempre foi um pouco assim usando o padrão. Normalmente em contato de colisores ou em alta velocidade a física "estoura" causando esses bugs em troca de perfomance. Você poderia por exemplo fazer algumas mudanças em como a física reconhece as colisões, exemplo:

Em Edit > Project Settings > Physics você pode mudar o Max Depenetration Velocity para algo maior como 100 ou 1000 assim os colisores ficarão mais agentes em algo em alta velocidade. Isso com a mudança de comportamento do Rigidoby para Continuous deveria resolver o problema.

Outras mudanças que podem ser feitas tem a ver com funções de código mais focadas em colisão, que podem ajudar a resolver o problema.

Resolveu em 100. Muito obrigado Henrique! =)