"private void Start()\n {\n isWKeyPressed = Input.GetKey(KeyCode.W);\n isSKeyPressed = Input.GetKey(KeyCode.S);\n isAKeyPressed = Input.GetKey(KeyCode.A);\n isDKeyPressed = Input.GetKey(KeyCode.D);\n isJKeyPressed = Input.GetKey(KeyCode.J);\n }\nprivate void Update()\n{\n if (isWKeyPressed)\n {\n // 执行按下W键的逻辑\n }\n\n if (isSKeyPressed)\n {\n // 执行按下S键的逻辑\n }\n\n if (isAKeyPressed)\n {\n // 执行按下A键的逻辑\n }\n\n if (isDKeyPressed)\n {\n // 执行按下D键的逻辑\n }\n\n if (isJKeyPressed)\n {\n // 执行按下J键的逻辑\n }\n}\n我这里面的赋值有用吗,怎么使用它们在Update`方法中使用这些变量来做一些逻辑判断,按下j键并没有通过if内容:你在Start方法中对这些变量进行了赋值,但是在Update方法中并没有更新这些变量的值,所以它们的值将保持不变。要在Update方法中使用这些变量进行逻辑判断,你需要在Update方法中重新获取键盘输入的状态。\n\n你可以将赋值的逻辑移到Update方法中,这样每帧都会更新这些变量的值。修改后的代码如下:\n\nprivate void Update()\n{\n isWKeyPressed = Input.GetKey(KeyCode.W);\n isSKeyPressed = Input.GetKey(KeyCode.S);\n isAKeyPressed = Input.GetKey(KeyCode.A);\n isDKeyPressed = Input.GetKey(KeyCode.D);\n isJKeyPressed = Input.GetKey(KeyCode.J);\n\n if (isWKeyPressed)\n {\n // 执行按下W键的逻辑\n }\n\n if (isSKeyPressed)\n {\n // 执行按下S键的逻辑\n }\n\n if (isAKeyPressed)\n {\n // 执行按下A键的逻辑\n }\n\n if (isDKeyPressed)\n {\n // 执行按下D键的逻辑\n }\n\n if (isJKeyPressed)\n {\n // 执行按下J键的逻辑\n }\n}\n\n这样,每帧都会更新这些变量的值,你就可以在Update方法中正确地根据键盘输入的状态进行逻辑判断了。\n

Unity 中键盘输入检测与逻辑判断 - 使用 Input.GetKey() 方法

原文地址: https://www.cveoy.top/t/topic/pNIa 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录