Unity玩家控制器脚本点击切换操控功能失效问题咨询
Unity点击切换角色操控功能修复方案
现有代码存在的错误
- 赋值语句缺失等号:
Update方法中verticalInput Input.GetAxisRaw("Vertical")语句缺少赋值运算符=,属于语法错误。 - 常量拼写错误:构造
Vector3时传入的第二个参数是小写字母o,应为数字0。 - 方法名存在多余空格:
transform. Translate中间多了空格,不符合C#语法规范,会导致编译报错。 - 条件判断误用赋值运算符:
OnMouseDown方法中if (mouseClicked = false)使用了赋值运算符=而非比较运算符==,逻辑永远不成立,且该段判断逻辑冗余,可直接用布尔值取反简化。 - 缺少类定义结构:代码外层没有继承
MonoBehaviour的类声明,作为Unity脚本无法挂载到对象上。
修复后完整代码
// 类名可根据自己的项目修改,确保和脚本文件名一致 public class PlayerController : MonoBehaviour { private float verticalInput; private float horizontalInput; private float speed = 20f; private Vector3 movement; private bool mouseClicked = false; // Update is called once per frame. void Update() { verticalInput = Input.GetAxisRaw("Vertical"); horizontalInput = Input.GetAxisRaw("Horizontal"); movement = new Vector3(verticalInput, 0, -horizontalInput); if (mouseClicked) { transform.Translate(movement * speed * Time.deltaTime); } } void OnMouseDown() { // 直接取反实现切换效果,无需冗余判断 mouseClicked = !mouseClicked; } }
额外注意事项
- 挂载脚本的玩家对象必须添加对应类型的碰撞体(3D对象加
Collider、2D对象加Collider2D),否则OnMouseDown事件不会触发。 - 如果使用的是UGUI的Image/Text作为玩家显示载体,需要给场景中的主相机添加
Physics Raycaster组件,同时给UI对象添加Event Trigger绑定点击事件才能生效。
内容的提问来源于stack exchange,提问作者yassin eltaramsi
相关产品推荐
相关产品推荐

