判断碰撞框是否触地
在PlayerHandle下面增加代码On Ground Sensor在原有碰撞框上面加一个测试用的碰撞框当测试用的碰撞框和地面测试碰撞框相撞就判定On Gound
代码如下:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class OnGroundSensor : MonoBehaviour {
public CapsuleCollider capcol;//在外面灌handle的collider;
private Vector3 point1;
private Vector3 point2;
private float radius;
// Use this for initialization
void Awake () {
radius = capcol.radius;//得到playerhandle的collider的半径
//print(radius);
}
// Update is called once per frame
void FixedUpdate () {
point1 = transform.position + transform.up * radius;
point2 = transform.position + transform.up * capcol.height - transform.up * radius;
Collider[] outputCols = Physics.OverlapCapsule(point1, point2, radius,LayerMask.GetMask("Ground"));//有几处和Ground发生碰撞
//print(outputCols.Length);
if (outputCols.Length != 0)
{
foreach (var col in outputCols)
{
print("collision:" + col.name);//发生碰撞的物体名称
}
}
}
}