summaryrefslogtreecommitdiff
path: root/ActiveRagdoll/Assets/TABG/Scripts/CollisionChecker.cs
blob: 75741aba3cb5c04d461f4e76e2765bbdf90357f1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
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;
            }
        }
    }

}