【问题标题】:Trigger collider only if touchphase ended仅在 touchphase 结束时触发碰撞器
【发布时间】:2018-09-06 07:15:28
【问题描述】:

请大家帮忙,我是 Unity 新手,目前正在制作一款移动垃圾分类游戏,玩家必须将掉落的垃圾拖到相应的垃圾桶中。

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

但是,我想要的是销毁垃圾游戏对象的触发器“只有当玩家停止触摸垃圾并将其丢弃在触发器的位置时”

【问题讨论】:

    标签: unity3d


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多