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

标签 triggers unity3d unityscript destroy

我正在构建一个玩家在路径上奔跑的游戏。当玩家触发对撞机时,将生成 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 上发帖的重点。但它应该可以帮助您继续前进。尝试使用代码进行一些操作,如果您有任何问题,请返回此处询问他们,并提供一些代码来展示您的尝试。

关于triggers - 如何在输入另一个对撞机的触发器时禁用对撞机?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15087616/

相关文章:

c# - C# 中的内联函数 block

c# - Unityscript/Javascript 是否已停产?

c# - 统一 3D : Game Object interaction

批量插入后MySQL触发器

postgresql - 触发器阻止向表中插入数据

c# - 如何在Unity中防止 "public"?

c# - 与此 C# 片段等效的 UnityScript

mysql - 我应该使用触发器来连接两个相关但高度非规范化的表吗?

SQL Server 触发器更新和增量计数器

android - 在 Unity 上使用 Cardboard SDK 重新定位或重新定位 View