【问题标题】:Child gameobject counter rotates when rotating parent in unity统一旋转父级时,子级游戏对象计数器旋转
【发布时间】:2020-05-03 19:09:36
【问题描述】:

在我的第一人称控制器中,我有一个包含相机的空游戏对象。我想分别围绕 y 轴旋转游戏对象和围绕 x 轴旋转相机,但相机会反向旋转。

我的playerobject的结构如下:

玩家对象

  • 游戏对象

    • 相机

这是我使用的代码的简化版本:

public Transform GameObject;
private Camera PlayerCamera;
public Quaternion cam_pan;
public Quaternion cam_tilt;

private void Start()
{
    PlayerCamera= GameObject.GetComponentInChildren<Camera>();
}

private void Update()
{
    cam_tilt = Quaternion.Euler(cam_tilt.eulerAngles.x - Input.GetAxis("Mouse Y"), 0, 0);
    cam_pan = Quaternion.Euler(0, cam_pan.eulerAngles.y + Input.GetAxis("Mouse X"), 0);

    PlayerCamera.transform.rotation = cam_tilt;
    GameObject.transform.rotation = cam_pan;
}

我对统一比较陌生,所以如果我遗漏了明显的东西,请原谅我,但我没有找到任何解释这种行为,我真的很茫然。

【问题讨论】:

  • transform.rotation 是世界空间旋转。如果您想在层次结构中相对于其父级旋转相机,请改为设置transform.localRotation

标签: c# unity3d


【解决方案1】:

您正在添加 Input.GetAxis(“Mouse Y”) 并减去 Input.GetAxis(“Mouse X”) 只是一个注释,如果你有 ia 孩子,当你旋转父母时,你也会旋转孩子

【讨论】:

    【解决方案2】:

    我不明白你到底想说什么。我认为这是您的问题:相机围绕 X 和 Y 轴旋转;但你想只围绕 X 轴旋转它。

    您正在围绕 Y 轴旋转游戏对象。您的相机是您的 Gameobject 的子对象。这意味着您正在围绕 Y 轴旋转相机。您再次围绕 X 轴旋转相机。然后您的相机将围绕 Y 轴和 X 轴旋转。

    如果您想仅围绕 X 轴旋转相机,请不要将其作为 Gameobjet 的子对象。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-06-14
      • 1970-01-01
      • 2022-07-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-17
      相关资源
      最近更新 更多