WallJump funcionando fora da parede

C#

Unity 3D

24/04/2023

Estava fazendo um projeto na Unity 3D e fui fazer um sistema de WallJump, fiz o sistema desligando a gravidade quando ele encostasse na parede e tava funcionando legal, mas quando eu estava testando movimentação eu vi que o meu Player identificava parede mesmo não estando em uma parede, eu queria fazer um sistema de só desligar a gravidade quando o Player encostasse em um lugar que estivesse em uma parede com uma Layer especifica, o problema é que eu n faço ideia de como fazer isso, ja tentei usar IF fora do Void mas da erro no código e eu não sei como fazer isso dentro do Void, alguêm pode dar uma ajuda?

void StartWallRun()
{
if (playerCollider)
rb.useGravity = false;

rb.AddForce(Vector3.down * wallRunGravity, ForceMode.Force);

cam.fieldOfView = Mathf.Lerp(cam.fieldOfView, wallRunfov, wallRunfovTime * Time.deltaTime);

if (wallLeft)
{
tilt = Mathf.Lerp(tilt, -camTilt, camTiltTime * Time.deltaTime);
}
else if (wallRight)
{
tilt = Mathf.Lerp(tilt, camTilt, camTiltTime * Time.deltaTime);
}

if (Input.GetKeyDown(KeyCode.Space))
{
if (wallLeft)
{
Vector3 wallRunJumpDirection = transform.up + leftWallHit.normal;
rb.velocity = new Vector3(rb.velocity.x, 0, rb.velocity.z);
rb.AddForce(wallRunJumpDirection * wallRunJumpForce * 100, ForceMode.Force);
}
else if (wallRight)
{
Vector3 wallRunJumpDirection = transform.up + rightWallHit.normal;
rb.velocity = new Vector3(rb.velocity.x, 0, rb.velocity.z);
rb.AddForce(wallRunJumpDirection * wallRunJumpForce * 100, ForceMode.Force);
}
}
}

void StopWallRun()
{
rb.useGravity = true;

cam.fieldOfView = Mathf.Lerp(cam.fieldOfView, fov, wallRunfovTime * Time.deltaTime);
tilt = Mathf.Lerp(tilt, 0, camTiltTime * Time.deltaTime);
}

esse é o código de onde esta dando problema
Kauan

Kauan

Curtidas 0
POSTAR