summaryrefslogtreecommitdiff
path: root/ActiveRagdoll/Assets/TABG/Scripts/CollisionChecker.cs
diff options
context:
space:
mode:
authorchai <215380520@qq.com>2024-03-19 21:06:40 +0800
committerchai <215380520@qq.com>2024-03-19 21:06:40 +0800
commitc743485dad2ca83e12d16326afc9c319e3169f9a (patch)
treebef7635defc8d48ffe64738a7ee598f43843f9c3 /ActiveRagdoll/Assets/TABG/Scripts/CollisionChecker.cs
parent999a454764e91714847f531aee13903bfc31b0a9 (diff)
*misc
Diffstat (limited to 'ActiveRagdoll/Assets/TABG/Scripts/CollisionChecker.cs')
-rw-r--r--ActiveRagdoll/Assets/TABG/Scripts/CollisionChecker.cs72
1 files changed, 72 insertions, 0 deletions
diff --git a/ActiveRagdoll/Assets/TABG/Scripts/CollisionChecker.cs b/ActiveRagdoll/Assets/TABG/Scripts/CollisionChecker.cs
new file mode 100644
index 0000000..75741ab
--- /dev/null
+++ b/ActiveRagdoll/Assets/TABG/Scripts/CollisionChecker.cs
@@ -0,0 +1,72 @@
+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<Player>();
+
+ 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;
+ }
+ }
+ }
+
+}