【发布时间】:2022-02-17 03:23:38
【问题描述】:
我正在统一创建一个游戏,玩家可以使用箭头键在地图上移动并使用鼠标改变方向,但是我试图让相机在玩家按住空格键时回头看但是继续前进。
所以有这段代码可以将相机旋转 180 度,但如果我按住空格键闪烁,就好像它在面向前和面向后之间切换一样。 我该如何阻止这种情况发生?
private void Update()
{
if (Input.GetKey(KeyCode.Space) && !globalScript.lookBack)
{
globalScript.lookBack = true;
transform.Rotate(new Vector3(14, 180, 0));
}
else {
globalScript.lookBack = false;
}
}
我还试图让玩家即使在相机向后看时也总是向前移动(我已经将我的玩家设置为朝着相机所面对的方向移动)所以换句话说,当玩家向后看时,他们仍然当相机朝前时,它们的移动方向与它们移动的方向相同。
我想出了这个方法来根据我认为正在工作的相机在向前和向前之间切换,但我认为没有正确访问回溯,我不知道为什么。
Vector3 moveDir;
if (globalScript.lookBack)
{
moveDir = Quaternion.Euler(0f, targetAngle, 0f) * -Vector3.forward;
}
else
{
moveDir = Quaternion.Euler(0f, targetAngle, 0f) * Vector3.forward;
}
controller.Move(moveDir.normalized * playerMoveSpeed * Time.deltaTime);
我该如何解决这个问题,以便在我向后看时仍然可以向前移动?
【问题讨论】:
标签: c# unity3d game-development