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

本文详细介绍了Unity中触发器和碰撞器的功能及其使用方法,包括如何通过脚本实现物体之间的触发和碰撞检测,以及如何根据不同情况设置物体为触发器。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

触发信息检测:
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 ;
    }
}

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值