3
respostas

Atravessando paredes nos cantos!

Professor e colegas,

Após cercar o cenário do jogo completamente com paredes, fiz um teste e percebi que o jogador atravessa as paredes nos cantos, principalmente ao mover-se na diagonal nesses cantos. Aparentemente o problema é onde há interseção de box colliders, seja onde há 2 muros com ângulos diferentes ou encontro de muros com outra parte do cenário como hotel e hotel secundário. Alguma ideia???

3 respostas

Oi, Wilton, tudo bem?

Quer mandar uma foto ou um .zip do projeto pra gente dar uma olhada?

Tudo bem.

Então Henrique, depois de pesquisar mais sobre a questão acabei achando uma forma de fazer com que o personagem não mais atravessasse paredes nos cantos. Não sei se se isso tem alguma outra implicação ou se isso está relacionado com a versão do Unity já que estou fazendo o curso em 2020 com a versão de 2020 e a versão do curso é mais antiga. Mas aqui vai o que foi feito. No lugar de usar o método MovePosition do Rigidbody passei a usar o .velocity, então o trecho de código ficou assim:

No lugar de:

componenteFisica.MovePosition(componenteFIsica.position + (direcao.normalized * Velocidade * Time.fixedDeltaTime));

Usei:

componenteFisica.velocity = direcao.normalized * Velocidade;

Quando isso é feito a física fica um pouco mais "realista" então o personagem não desliza mais nas paredes ao fazer movimento diagonal. Para que ele deslizasse um pouco coloquei um Material de física no collider dele e diminui o atrito.

Me baseei nos seguinte tópicos para fazer as mudanças:

https://www.reddit.com/r/Unity3D/comments/6f9z0q/player_rigidbody_passes_through_walls_when_moving/

https://docs.unity3d.com/ScriptReference/Rigidbody.MovePosition.html

Se tiver alguma observação a acrescentar agradeço.

Hummm não deveria mas o MovePosition leva em consideração a interpolação do Rigidoby que pode estar pipocando algo na física nos cantos.

Você também pode mexer no Drag e na massa dos objetos para obter um comportamento melhor da física.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software