WallJump funcionando fora da parede
24/04/2023
0
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
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
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)