【发布时间】:2019-07-25 13:18:33
【问题描述】:
我正在为我的 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);
}
}
【问题讨论】:
-
不知道……Camera移动/旋转的实现代码在哪里?
-
听起来您的相机移动与 Unity 中的 Time 构造无关。相机运动是纯粹由输入决定的还是每帧任意增加的变量决定的?确保相机周围的所有移动脚本都引用 Time.deltaTime 或连接到时间系统的某些计算部分,以便
Time.timescale = 0f实际上会影响它。 -
猜测是因为相机代码不存在,但将时间刻度设置为 0 并不一定会冻结您的相机。有点像《黑客帝国》中的一个场景,动作停止但摄像机仍然可以四处移动。
-
@GraphTheory 这就是我在做更多研究后的想法,但我仍然没有找到解决它的方法。
-
@EthanK-B 添加您的相机代码可以帮助我们回答您的问题,也可以帮助将来有相同问题的人。