c# - Unity 播放器控制器脚本不起作用
问题描述
我正在尝试制作一个有玩家的游戏,一旦你点击他就可以控制他。如果您再次单击他,您将无法再控制他,但这不起作用。
C#:
{
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, o, -horizontalInput);
if (mouseClicked) {
transform. Translate (movement * speed * Time.deltaTime);
}
}
void OnMouseDown() {
if (mouseClicked = false) {
mouseClicked = true;
} else if (mouseClicked) {
mouseClicked =false;
}
}
解决方案
if 语句的条件错误。你忘了再加一个=
。
更改if(mouseClicked = false)
为if(mouseClicked == false)
应该工作。对于您的错误代码,mouseClicked
将永远不会更改,因为mouseClicked = false
将始终false
在 if 条件下进行评估。
你不需要写这个多余的 if-else。只需这样做:
mouseClicked = !mouseClicked;
推荐阅读
- python - 如何使用python模型模型来提取特征?
- android - 有没有办法在动态创建的每个文本视图中放置可绘制对象?
- maven-3 - 尝试查找依赖项目时 Maven 安装失败
- reactjs - 从后端存储、检索和显示视频到 Reactjs 项目
- java - Button.isSelected() 不返回 true
- javascript - 在 React 和 Express js 中使用 Stripe Checkout
- docker - 从 Windows 容器通过 VPN 连接到资源
- php - 如何将一个字符串的结果合并或合并到另一个字符串中(包括内爆)
- c++ - 数百行来自else if语句的垃圾代码
- excel - 仅使用 VBA 到 PDF 的工作表中填充的打印区域