如何在输入另一个对撞机的触发器时禁用对撞机?

时间:2013-02-26 11:13:30

标签: triggers unity3d unityscript destroy

我正在构建一个玩家在路径上运行的游戏。当玩家触发对撞机时,会产生2个敌人物体。

我想要的是当输入第一个碰撞器触发器时,我希望第二个碰撞器在距离第一个碰撞器一定距离处被禁用一段时间。怎么做到这一点?

1 个答案:

答案 0 :(得分:2)

例如,如果您想要禁用对撞机以使它们不会从墙上撞击或反弹,那么您可以将对撞机的“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上发布的一般信息。但它应该可以帮助你继续前进。尝试使用代码玩一些,如果您有问题,请回到这里并询问他们,提供一些代码以显示您尝试过的问题。