【问题标题】:How to disable a collider when the trigger of another collider has been entered?输入另一个对撞机的触发器后如何禁用对撞机?
【发布时间】:2013-02-26 11:13:29
【问题描述】:

我正在构建一个玩家在路径上奔跑的游戏。当玩家触发对撞机时,会生成 2 个敌方物体。

我想要的是当输入第一个对撞机触发器时,我希望与第一个对撞机有一定距离的第二个对撞机在一段时间内被禁用。如何做到这一点?

【问题讨论】:

    标签: triggers unity3d unityscript destroy


    【解决方案1】:

    例如,如果您想禁用对撞机,使其不会撞到墙上或从墙上反弹,那么您可以将对撞机的“isTrigger”变量更改为 true,将其更改为触发体积而不是固体对撞机。这具有禁用它的效果 - 因为它不会导致其他物体在撞击它时停止或反弹。

    例如:

    function Update() {
        if (Input.GetKeyDown(KeyCode.X)) {
            collider.isTrigger = true;
        }
    }
    

    请注意,MouseOver 之类的内容仍然有效。

    如果你想完全禁用它,你可以试试collider.enabled = false。我不确定这是否有效。如果没有,您可以随时缩小对撞机:

    var myOldSize:Vector3;
    
    function DisableBoxCollider(myCollider:BoxCollider)
    {
        //actually just resizes it
        myOldSize=myCollider.size;
        myCollider.size=Vector3(0,0,0);
    }
    
    function EnableBoxCollider(myCollider:BoxCollider)
    {
        if(myOldSize!=Vector3(0,0,0))
            myCollider.size=myOldSize;
    }
    

    您可以使用上面的代码将其集成到您自己的项目中。我不会为你泄露所有代码,因为否则我们会错过学习编程和在 Stackoverflow 上发布的重点。但这应该可以帮助您继续前进。尝试使用代码进行一些尝试,如果您有任何问题,请返回此处询问他们,并为问题提供一些代码以显示您尝试过的内容。

    【讨论】:

    • 感谢您的回复。这里我正在寻找的是在一个对撞机的触发器进入和另一个对撞机的触发器退出之间运行函数。可能吗 ??这是代码函数 OnTriggerEnter() { if(other.gameObject.tag=="player"){ instantiate(enemy,transform.position,transform.rotation) } } 现在我希望这个实例化的敌人在玩家退出游戏时死亡触发不同的对撞机。如何做到这一点??
    猜你喜欢
    • 2020-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多