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