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;
}
}
}
}
|