using Rigging.Data; using System.Collections; using System.Collections.Generic; using UnityEngine; namespace Rigging { public class CollisionChecker : MonoBehaviour { public Player player; private Transform head { get { return player.body.head.transform; } } private Transform hip { get { return player.body.hip.transform; } } private StandingDataHandler data; public bool active = true; public float sinceGrounded = 0; // 离地开始算的时间 public float allowedSteepnesAngle = 60f; private void Start() { player = GetComponentInParent(); data = player.status.standingData; } private void Update() { sinceGrounded += Time.deltaTime; } private void OnCollisionStay(Collision collision) { Collide(collision); } private void OnCollisionEnter(Collision collision) { Collide(collision); } private void Collide(Collision collision) { if (active && Vector3.Angle(Vector3.up, collision.contacts[0].normal) < allowedSteepnesAngle) { if ((bool)data) { data.TouchGround(Mathf.Abs(hip.position.y - collision.contacts[0].point.y), collision.contacts[0].normal); } sinceGrounded = 0f; } } } }