Unity飞机俯仰系统开发报错:‘rotateInput’在当前上下文中不存在
Unity飞机俯仰系统代码错误修复
问题说明
你尝试实现飞机接收垂直输入时的俯仰功能,但代码出现编译错误,错误提示翻译如下:
Assets/Scripts/playerController.cs(18,9): 错误 CS0103: 名称‘rotateInput’在当前上下文中不存在Assets/Scripts/playerController.cs(25,29): 错误 CS0103: 名称‘rotateInput’在当前上下文中不存在
错误原因
C#语言要求所有变量必须先声明再使用,你在Update方法中直接给rotateInput赋值,却没有在类的作用域内声明这个变量,导致编译器无法识别它。
修复后的完整代码
using System.Collections; using System.Collections.Generic; using UnityEngine; public class playerControllerX : MonoBehaviour { private float rotateSpeed = 5f; private float horizontalInput; public float forwardInput; // 声明rotateInput变量,使其在类的所有方法中可用 private float rotateInput; void Start() { } void Update() { horizontalInput = Input.GetAxis("Horizontal"); rotateInput = Input.GetAxis("Vertical") * rotateSpeed * Time.deltaTime; } void LateUpdate() { // 飞机俯仰是绕X轴旋转(抬头/低头),原代码绕Y轴是左右转向,已修正 transform.Rotate(rotateInput, 0, 0); } }
额外提示
- 变量作用域:类级别的变量(在方法外声明)可以被类内所有方法访问,所以把
rotateInput和其他变量放在一起声明是正确的做法。 - 旋转轴纠正:Unity中,飞机的俯仰动作对应绕X轴旋转,你原来的代码绕Y轴旋转是实现左右转向,已帮你修正为正确的轴。
内容的提问来源于stack exchange,提问作者lotsoflanguagesprogrammer
相关产品推荐
相关产品推荐

