首页 文章

仅在触摸阶段结束时触发对撞机

提问于
浏览
0

任何人请帮助,我是团结的新手,目前正在制作一个移动垃圾隔离游戏,玩家必须将落下的垃圾拖入各自的垃圾桶 .

游戏中有“4个垃圾桶”,每个都有自己的多边形对撞机,它被设置成一个触发器 . 目前,一旦垃圾箱和垃圾的碰撞器与它们的边缘碰撞,触发器就会破坏被拖到它上面的“垃圾游戏对象”,我正在使用“OnTriggerEnter2D”来执行销毁功能 .

然而,我想要的是破坏垃圾游戏对象的触发器“只有当玩家停止接触垃圾并将其放在触发器的位置时”

1 回答

  • 2

    使用 OnTriggerEnter(Collider)OnTriggerExit(Collider) 更改垃圾状态 . 通过这种方式,bool应该足够(在垃圾中/不在垃圾中) .

    所以:

    你的垃圾脚本:

    bool inTrash=false;
    
    void OnTriggerEnter(Collider other)
        {
            inTrash=true;
        }
    
    void OnTriggerExit(Collider other)
        {
            inTrash=false;
        }
    

    您的触摸控制器脚本:

    //your touch management here
    case TouchPhase.Ended:
                       if(garbage.inTrash)
                       {
                         garbage.Destroy();
                       }
                        break;
    

    另一个方法:使用OnTriggerStay(Collider)

    void OnTriggerStay(Collider other)
        {
    //OnTriggerStay is called once per physics update for every Collider other that is touching the trigger.
            if (yourTouch.TouchPhase==TouchPhase.Ended)
            {
                DestroyGarbage();
            }
        }
    

相关问题