update: now player uses additional collider to detect ground

This commit is contained in:
KOSMOGOR
2025-03-18 16:59:33 +03:00
parent 552bfc98c2
commit 29a01f66cc
4 changed files with 87 additions and 6 deletions
+14
View File
@@ -0,0 +1,14 @@
using UnityEngine;
public class GroundDetector : MonoBehaviour
{
public bool onGround { get; private set; } = false;
void OnTriggerEnter(Collider other) {
if (other.CompareTag("Ground")) onGround = true;
}
void OnTriggerStay(Collider other) { OnTriggerEnter(other); }
void OnTriggerExit(Collider other) {
if (other.CompareTag("Ground")) onGround = false;
}
}
@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: f16350ecb17bc8e49a8e9b8124ff2db2
+4 -6
View File
@@ -17,16 +17,18 @@ public class PlayerMovement : MonoBehaviour
[Header("Debug info")]
[SerializeField] bool isCrouching = false;
[SerializeField] Vector3 gravityVelocity;
[SerializeField] bool grounded;
[SerializeField] bool grounded = false;
CharacterController characterController;
GroundDetector ground;
void Start() {
characterController = GetComponent<CharacterController>();
ground = GetComponent<GroundDetector>();
}
void Update() {
grounded = GetOnGround();
grounded = ground.onGround;
HandleCrouching();
HandleMovement();
HandleJumping();
@@ -69,10 +71,6 @@ public class PlayerMovement : MonoBehaviour
characterController.Move(gravityVelocity * (Time.deltaTime * gravityMultiplier));
}
bool GetOnGround() {
return Physics.CheckSphere(legsPosition.position, legsRadius, groundMask);
}
void OnControllerColliderHit(ControllerColliderHit hit) {
hit.gameObject.SendMessage("ReverseOnControllerColliderHit", hit, SendMessageOptions.DontRequireReceiver);
}