c# - Unity 为什么我的 FPS 暂停菜单不会停止相机旋转?
问题描述
我正在为我的 FPS 游戏制作暂停菜单,到目前为止,我能够让暂停菜单面板显示并与之交互,但它不会停止相机移动。有人可以告诉我我做错了什么吗?
这是代码:
public class PauseMenuu : MonoBehaviour
{
public static bool GameIsPaused = false;
public GameObject PauseMenu;
private void Start()
{
}
void Update()
{
if (Input.GetKeyDown(KeyCode.Escape))
{
if (GameIsPaused)
{
Resume();
}
else
{
Pause();
}
}
}
void Resume()
{
PauseMenu.SetActive(false);
Time.timeScale = 1f;
GameIsPaused = false;
}
void Pause()
{
PauseMenu.SetActive(true);
Time.timeScale = 0f;
GameIsPaused = true;
}
}
这是我的相机旋转代码,如果这可以帮助您弄清楚相机发生了什么。
public class CameraRotate : MonoBehaviour
{
public float speed;
float time = 14.0f;
public GameObject HeadCamera;
public bool updateOn = true;
void Start()
{
StartCoroutine(updateOff());
}
void Update()
{
Rotation();
}
void Rotation()
{
RotateX += Input.GetAxis("Mouse X") * RotationSpeed;
RotateY += Input.GetAxis("Mouse Y") * RotationSpeed;
RotateY = Mathf.Clamp(RotateY, MinYAxis, MaxYAxis);
Camera.transform.localRotation = Quaternion.Euler(-RotateY, 0f, 0f);
transform.rotation = Quaternion.Euler(0f, RotateX, 0f);
}
}
解决方案
它可以为你解决它,尝试相对于它自己的位置旋转相机。所以你要做的就是把它添加到你的函数调用的顶部:
void Rotation()
{
if(Time.deltaTime == 0){
return;
}
...
另请注意,您可能需要更改几个值才能像以前一样获得旋转量。
希望能帮助到你!
推荐阅读
- sql - 如何快速从表中删除一行?
- json - VBA XMLHTTP JSON 响应包含转义的正斜杠以及 unicode 字符,如 Umlaute 的 \u00f6
- node.js - Visual Studio Code 中的自动完成问题
- powershell - 在哪里可以找到预定义的类、方法、函数等?
- java - java - 如何在java中将一个getter方法与返回类型作为整数与常量int变量进行比较
- json - 如何使用 kotlinx.serialization 部分解码 JSON 字符串?
- node.js - express-mutler 总是保存到临时文件夹
- r - 在 R 中读取 CSV 文件时移动列的问题
- react-hooks - React Konva 中的舞台宽度和高度是否有任何限制?
- node.js - 无法在 mac 终端上安装 npm /react /node js