【问题标题】:How do you change the camera position Temporarily and then revert it back to where it was in Unity?如何临时更改相机位置,然后将其恢复到 Unity 中的位置?
【发布时间】:2022-02-17 14:35:52
【问题描述】:

我正在统一制作一款游戏,玩家可以在地图上移动,当他们按住空格键时,相机会旋转 180 度,这样他们就可以看到他们的身后。

当玩家按住空格键时,我还希望相机在玩家正上方移动(此时相机位于玩家后面看着玩家)向后看。

这是我必须旋转相机以及重新定位相机的代码:

Quaternion halfRotation = Quaternion.Euler(14, 180, 0);
    if (Input.GetKey(KeyCode.Space))
    {
        if (!globalScript.lookBack)
        {
            globalScript.lookBack = true;
            transform.rotation *= halfRotation;
            transform.position = new Vector3(transform.parent.position.x, transform.parent.position.y + 1, transform.parent.position.z);
        }
    }

    else if (globalScript.lookBack)
    {
        globalScript.lookBack = false;
        transform.rotation *= Quaternion.Inverse(halfRotation);

    }

当按下空格键时,我在第二个 if 语句中更改了作为玩家子级的相机的位置。这会将相机移动到我希望它在回首时的位置,但我正在努力弄清楚如何在释放空间时将其放回原来的位置。

我希望它恢复到的位置是 (0,4,-9)

如何将其恢复到此位置?

【问题讨论】:

  • 移动方式相同。你可以回弹或回弹。
  • 在回溯发生之前,相机的本地位置通常是多少?
  • 回看前的位置通常在x=0, y=4, z=-9

标签: c# unity3d game-development


【解决方案1】:

在开始相机翻转动作之前,您可以将相机的位置存储在一个向量变量中,然后在动作结束后将其设置回该变量。

【讨论】:

  • 补充一点,如果玩家移动到不同的世界位置,您可能需要使用 localPosition
  • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
  • 我如何使用本地位置?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-25
相关资源
最近更新 更多