Unity刚体穿过条件,模仿《GRIS》楼梯效果,可从下方穿过

  • 知识点
  • 碰撞器和触发器

触发信息检测:
1.MonoBehaviour.OnTriggerEnter(Collider other) / MonoBehaviour.OnTriggerEnter2D(Collider2D other)当进入触发器
2.MonoBehaviour.OnTriggerExit(Collider other) / MonoBehaviour.OnTriggerExit2D(Collider2D other)当退出触发器
3.MonoBehaviour.OnTriggerStay(Collider other) / MonoBehaviour.OnTriggerStay2D(Collider2D other)当逗留触发器

碰撞信息检测:
1.MonoBehaviour.OnCollisionEnter(Collision collisionInfo) / MonoBehaviour.OnCollisionEnter2D(Collision2D collisionInfo)当进入碰撞器
2.MonoBehaviour.OnCollisionExit(Collision collisionInfo) / MonoBehaviour.OnCollisionExit2D(Collision2D collisionInfo)当退出碰撞器
3.MonoBehaviour.OnCollisionStay(Collision collisionInfo) / MonoBehaviour.OnCollisionStay2D(Collision2D collisionInfo) 当逗留碰撞器

物体初始设置为触发器
挂载物体脚本的核心部分:

private void OnCollisionEnter2D(Collision2D col)
{
    rig = col.gameObject.GetComponent<Rigidbody2D>();
    if (col.gameObject.tag == "Player")
    {
        if (rig.gameObject.transform.position.y < gameObject.transform.position.y) 
        gameObject.GetComponent<PolygonCollider2D>().isTrigger = true;
    }
}

private void OnCollisionExit2D(Collision2D col)
{
    if (col.gameObject.tag == "Player")
    {
        gameObject.GetComponent<PolygonCollider2D>().isTrigger = true;
    }
}

private void OnTriggerEnter2D(Collider2D col)
{
    rig = col.gameObject.GetComponent<Rigidbody2D>();
    if (col.gameObject.tag == "Player")
    {
        if (rig.velocity.y <0 || rig.gameObject.transform.position.y > gameObject.transform.position.y) 
        gameObject.GetComponent<PolygonCollider2D>().isTrigger =false ;
    }
}

基本可以实现效果,有更好的方法欢迎大神补充。

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值