我正在尝试在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);
}
}
}
}
答案 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自定义函数(例如Update
,Start
和OnTriggerEnter
)区分大小写,如果没有,则不会被调用完全一样的名字。
示例:
private void OnTriggerEnter(Collider other) {}
代替onTriggerEnter()
,因为您需要确保OnTriggerEnter()
上的O像它应该是大写字母。否则您的函数将不会被调用,因此不会像您想要的那样触发碰撞。