Estou criando um jogo de parkour e me deparei com um problema. Há uma mecânica de corrida na parede, em que, se você estiver correndo na parede, a rotação do seu jogador fica travada no plano da parede. Isso funciona perfeitamente, desde que você acerte o lado esquerdo (oeste) da parede. Quando estiver no lado direito (leste) da parede, o jogador é virado na direção errada.
private void WallStick()
{
if (leftWall) wallNormal = leftWallHit.normal.y;
else if (rightWall) wallNormal = rightWallHit.normal.y;
if (leftWall) playerMovement.rotationScript.yRotation = wallNormal + 90f;
else if (rightWall) playerMovement.rotationScript.yRotation = wallNormal - 90f;
}
leftWall e rightWall são valores booleanos para ver em que direção a parede está para o jogador. Os acertos são raycasts. Todo o resto parece autoexplicativo, mas faça perguntas se necessário. Este código funciona perfeitamente como indicado, mas apenas se o jogador correr no lado oeste da parede.
Eu poderia dividir cada parede em 2 partes e atribuir uma layerMask para diferenciar qual lado o raio atinge, mas isso parece muito desajeitado e me faria redesenhar o mundo inteiro.
Alguma ideia?