OnCollisionStay 是在两者之间处在碰撞状态下、两者之间有相对移动的情况下才触发。
通过下面的代码判定物体是否在碰撞区域内:
InvokeRepeating(nameof(CheckPlayerStay), 0, 0.01f);
private void CheckPlayerStay()
{
if (!_collider.bounds.Contains(Player.transform.position))
{
var pos = _collider.transform.position;
pos.y = 0;
Collider[] colliders = Physics.OverlapSphere(pos, 2, 1 << Layers.Player);
if (colliders.Length <= 0)
{
CancelInvoke(nameof(CheckPlayerStay));
}
return;
}
Debug.Log("Player is here!");
}