update: now player uses additional collider to detect ground
This commit is contained in:
@@ -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
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user