c# - 我需要帮助修复我的密门密码
问题描述
所以我正在统一创建一个游戏,我正在尝试制作一个基于对撞机和输入的开放系统,这是我的代码:
public class SecretDoor : MonoBehaviour
{
public GameObject secretDoor;
public bool open;
private void OnTriggerEnter(Collider other)
{
open = true;
if (Input.GetKeyDown(KeyCode.T))
{
secretDoor.SetActive(false);
}
}
private void OnTriggerExit(Collider other)
{
open = false;
secretDoor.SetActive(true);
}
}
它没有打开或关闭,所以我希望有人可以帮助我。
解决方案
仅当玩家触摸门时才会检查输入,您可能需要查看OnTriggerStay。警告! 我想指出,wiki 还声明此功能并非在每一帧上都运行,这可能会阻碍这种能力。
请注意,仅当其中一个对撞机也附加了刚体时才会发送触发事件。触发事件将被发送到禁用的 MonoBehaviours,以允许启用行为以响应碰撞。
void OnTriggerStay(Collider other)
{
//check code here
}
这是猜测开放布尔值是否正常工作(您应该检查它是否与您将其设置为公共的一样。
因此,最好的方法可能是使用开放布尔值在更新函数中实现输入检测的最佳方法。
void Update(){
if(open){
if (Input.GetKeyDown(KeyCode.T)){
//Stuff here
}
}
}
推荐阅读
- elasticsearch - 弹性搜索总是返回零分
- python - 如何将日期时间对象格式化为日期
- math - 使用 Scilab 的前向差异表中的问题在哪里?
- python - 在python中根据文件名对文件进行排序
- javascript - 分区打印!对于 300 列的长表,打印数据未设置在多页中
- c++ - 如何为我的 AVL 树创建析构函数?
- java - 如何让对象在不使用 .this 的情况下访问方法中的变量?
- symfony - Api Platform 2.5:仅在当前实体嵌套时执行collectionOperations
- bash - 有没有比使用 tr -d 在 bash 中不用换行符更好的回显方法?
- javascript - Javascript数组reduce返回空数组