Unity游戏变焦功能故障:松开按键无法恢复默认FOV
故障原因
- 核心错误为
HandleZoom方法内的按键检测层级错误:Input.GetKeyUp(zoomKey)的判断被嵌套在了Input.GetKeyDown(zoomKey)的执行块中。Input.GetKeyDown仅在按键按下的单帧返回true,该帧内按键还处于按下状态,Input.GetKeyUp永远不可能触发,因此松开按键后的FOV复位逻辑完全不会执行。
修复方案
将Input.GetKeyUp的判断逻辑从Input.GetKeyDown的代码块中移出,和按下判断平级即可,修正后的HandleZoom代码如下:
private void HandleZoom() { // 按下按键触发变焦放大 if(Input.GetKeyDown(zoomKey)) { if(zoomRoutine != null) { StopCoroutine(zoomRoutine); zoomRoutine = null; } zoomRoutine = StartCoroutine(toggleZoom(true)); } // 松开按键触发FOV复位 if (Input.GetKeyUp(zoomKey)) { if (zoomRoutine != null) { StopCoroutine(zoomRoutine); zoomRoutine = null; } zoomRoutine = StartCoroutine(toggleZoom(false)); } }
可选校验项
- 确认
zoomKey变量已正确赋值为你想要绑定的变焦按键,比如常用的右键变焦可赋值为KeyCode.Mouse1 - 若你需要的是点按一次切换变焦状态、再点按一次恢复的逻辑,可将
GetKeyUp的判断改为GetKeyDown,再加个状态变量控制放大/复位切换即可
内容的提问来源于stack exchange,提问作者LBbrowns
相关产品推荐
相关产品推荐

