好,所以我基本上创建了一系列预制房间,每个房间的位置都固定了一个摄像头。我为每个相机isTrigger创建了一个盒式对撞机,并将对撞机设置为房间的大小。
public Camera curCam;
void OnTriggerEnter(Collider other)
{
if (other.tag == "Player")
{
curCam.gameObject.SetActive(true);
} // End of trigger check
} // End of TriggerEnter
void OnTriggerExit(Collider other)
{
if (other.tag == "Player")
{
curCam.gameObject.SetActive(false);
}
}
现在,我可以在curCam下将每个房间的摄像机添加到其房间。但是,相机在退出时会关闭,并且不会在隔壁房间重新打开。
编辑更新: 问题似乎出在我的相机被禁用并且在这种状态下不产生盒对撞机这一事实。我需要知道的是如何使所有摄像机保持启用状态,而不是渲染状态。也许处于睡眠状态?我找不到任何东西。请提供链接,建议或代码示例。
答案 0 :(得分:0)
附加到禁用游戏对象的脚本不执行代码。任何给定的脚本都无法重新启用自身。
答案 1 :(得分:0)
[RequireComponent(typeof(Camera))]
前一天我将其附加到脚本中,然后忘记了。我不知道它的目的是什么,但我认为这会有所帮助,因为我确实需要相机。研究完之后,我删除了它,现在我的代码可以正常工作了。
这是解决方案:
public Camera curCam;
void OnTriggerEnter(Collider other)
{
if (other.tag == "Player")
{
curCam.gameObject.SetActive(true);
} // End of trigger check
} // End of TriggerEnter
void OnTriggerExit(Collider other)
{
if (other.tag == "Player")
{
curCam.gameObject.SetActive(false);
}
}
将脚本附加到位于门口前面的多维数据集。将正确的摄像机插入每个房间的检查器中。代码完美运行!