触发器未在Unity中激活

时间:2020-10-10 06:04:07

标签: c# unity3d

我正在尝试在Unity中编写一个迷宫,您必须拿起钥匙才能在其他地方打开门。我在钥匙和门上都放置了对撞机,并设置了脚本,当玩家与他们碰撞时可以做不同的事情。这是脚本。问题在于密钥允许玩家通过它,但是由于玩家已经收集了密钥,也没有将其标记也不会破坏密钥。门和钥匙均已选中“是否已触发”。

public class DetectCollide : MonoBehaviour
{
    public static string hasKey = "n";


    void Start()
    {

    }


    void Update()
    {

    }

    private void onTriggerEnter(Collider other)
    {

        if(other.name == "Main Camera")
         {
             if(gameObject.name == "Key")
             {
                 
                 hasKey = "y";
                 Destroy(gameObject);
             }
             if((gameObject.name == "ArchDoor") && (hasKey == "y"))
             {
                 Destroy(gameObject);
             }
         }
    }
}

2 个答案:

答案 0 :(得分:0)

密钥和播放器都必须包含table = [[]] def setTable(): global table table = list(csv.reader(open("vplan/temp.csv"))) print(table) print(table) 组件:https://docs.unity3d.com/ScriptReference/Collider.OnTriggerEnter.html

两个GameObjects必须包含一个Collider组件。必须启用Collider.isTrigger并包含一个刚体。如果两个GameObjects都启用了Collider.isTrigger,则不会发生碰撞。当两个GameObjects没有Rigidbody组件时,也是如此。

所有前提条件都准备好了吗?

还请更改代码,看看它是否完全输入了功能

Collider

答案 1 :(得分:0)

似乎什么也没发生,甚至没有进入函数 更改后

问题出在您的函数名称上,Unity自定义函数(例如UpdateStartOnTriggerEnter)区分大小写,如果没有,则不会被调用完全一样的名字。

示例:

private void OnTriggerEnter(Collider other) {}

代替onTriggerEnter(),因为您需要确保OnTriggerEnter()上的O像它应该是大写字母。否则您的函数将不会被调用,因此不会像您想要的那样触发碰撞。

相关问题