En este momento estás viendo Problema de GroundCheck C#

 – Unity

Problema de GroundCheck C# – Unity

Problema de GroundCheck C#

– UnityAssets3Free

bienvenido , por aqui jorge y hoy os traigo
nueva pregunta curiosa

Seguí un tutorial de YouTube, pero el código para verificar el suelo (para que el jugador no pueda saltar en el aire y volar) no funciona. El código es:

[SerializeField] private bool isCharacterGrounded = false;
 private Vector3 velocity = Vector3.zero;

private void Update()

  HandleIsGrounded();
  HandleGravity();
  HandleJumping();


private void HandleIsGrounded()

    isCharacterGrounded = Physics.CheckSphere(transform.position, groundDistance);


private void HandleGravity()

    if (isCharacterGrounded && velocity.y < 0)
    
        velocity.y = -2f;
    

    velocity.y += gravity * Time.deltaTime;
    controller.Move(velocity * Time.deltaTime);


private void HandleJumping()

    if (Input.GetKeyDown(KeyCode.Space) && isCharacterGrounded)
    
        velocity.y += Mathf.Sqrt(jumpForce * -2f * gravity);
    

1 respuesta 1

Para realizar una verificación en tierra, ya sea con CheckSphere o Raycast, necesita una máscara de capa para identificar qué «capa» desea verificar. De lo contrario, su verificación en el suelo siempre será verdadera porque golpeará el propio colisionador de su jugador.

[SerializeField] private bool isCharacterGrounded = false;

// Assign in the inspector
public LayerMask GroundLayer; 
private Vector3 velocity = Vector3.zero;

private void Update()

  HandleIsGrounded();
  HandleGravity();
  HandleJumping();


private void HandleIsGrounded()

        isCharacterGrounded = Physics.CheckSphere(transform.position, groundDistance, GroundLayer);
    
   

Luego, asegúrese de que su terreno esté asignado a la capa Terreno en el inspector

Y, por último, asigne la capa Ground a la variable GroundLayer en el inspector

nota: si aun no se resuelve tu pregunta por favor dejar un comentario y pronto lo podremos de nuevo , muchas gracias

eso es todo,espero que te halla servido

Deja una respuesta