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

时间:2018-09-06 07:15:29

标签: unity3d

任何人都请帮忙,我是团结的新手,目前正在制作移动垃圾分类游戏,玩家必须将掉落的垃圾拖到各自的垃​​圾箱中。

游戏有“ 4个垃圾桶”,每个垃圾桶都有自己的多边形对撞机,该撞机设置为触发器。当前,一旦垃圾箱的碰撞器和垃圾的边缘与其碰撞,触发器就会破坏拖到其上的“垃圾游戏对象”,我正在使用“ OnTriggerEnter2D”执行销毁功能。

但是,我想要的是破坏垃圾游戏对象的触发器,“前提是玩家停止触摸垃圾并将其放在触发器的位置”

1 个答案:

答案 0 :(得分:2)

使用OnTriggerEnter(Collider)OnTriggerExit(Collider)更改垃圾状态。 这样一来,布尔值就足够了(在垃圾桶中/不在垃圾桶中)。

所以:

您的垃圾脚本:

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();
        }
    }