OnCollisionStay的判定问题和刚体的SleepingMode

问题描述:

  • 复刻GunMayhem的单向平台中,使用OnCollisionStay事件判断角色是否踩在平台上,但只有当两个碰撞体之间有相对位移时才会调用

解决方法:

  • 将角色的Rigidbody中的Sleeping Mode从Start Awake改为Never Sleep,允许角色检测每一帧的碰撞

代码:

  • 这里使用了移位运算来将layer转化为layerMask
1
2
3
4
5
6
7
8
9
10
private void OnCollisionStay2D(Collision2D collision)
{
if (Input.GetKey(KeyCode.S))
{

if((1<<collision.gameObject.layer) == ground.value)
collision.gameObject.GetComponent<OneWayPassController>().downToPlatform(playerCollider);

}
}