【问题标题】:Rotate camera on z-axis using keyboard使用键盘在 z 轴上旋转相机
【发布时间】:2017-08-29 10:08:28
【问题描述】:

我在一些我认为相对简单的问题上遇到了障碍。我想通过按“Q”和“E”键在 z 轴上“滚动”相机。

这是我编写的代码,附加到我的相机对象:

#pragma strict

var keyboardSensitivity : float = 10.0f;
private var rotZ : float;
private var localRotation : Quaternion;

function Start () {
    rotZ = 0.0f;
}

function Update () {
    if(Input.GetKey(KeyCode.Q)) {
        rotZ += Time.deltaTime * keyboardSensitivity;
        localRotation = Quaternion.Euler(0.0f, 0.0f, rotZ);
        transform.rotation = localRotation;
    }
    if(Input.GetKey(KeyCode.E)) {
        rotZ -= Time.deltaTime * keyboardSensitivity;
        localRotation = Quaternion.Euler(0.0f, 0.0f, rotZ);
        transform.rotation = localRotation;
    } 
}

据我所知,这应该是所需要的。但是当我按下 Q 或 E 键时,绝对没有任何反应。为什么?

【问题讨论】:

  • 请不要说“什么都没发生”。这段代码甚至不应该编译,因为没有声明localRotation。值得注意的是,Unityscript 已停产。您可能想要切换到开始询问 C# 问题。
  • 我说“什么都没有发生”,因为实际上什么都没有发生。当我问这个问题时,我忘了复制localRotation,但代码肯定编译得很好。我使用 Unityscript 作为个人偏好,我不认为不使用 C# 是我现在面临的问题的原因,但我会在以后的问题中记住这一点。
  • 我看到有人在这里发布了一个甚至无法编译的代码。所以我认为它就是其中之一。我提到 C# 作为您未来问题的通知。

标签: unity3d rotation unityscript


【解决方案1】:

没有任何反应,因为您的代码可能未附加到相机或附加到另一个 GameObject。它不能附加到另一个 GameObject。它必须附加到相机,因为您引用了transform.rotation,这将影响脚本附加到的当前游戏对象。

选择您的相机,然后将脚本拖到其中。单击“播放”并按 Q 或 E 按钮。相机应该旋转。我真的向你推荐 Unity 项目tutorials

【讨论】:

  • 我发现问题是另一段代码干扰了 z 轴旋转,但我会将您的代码标记为已接受。
  • 这是另一个可能的原因,如果 z 是从另一个脚本更改的,否则,您问题中的代码可能不起作用的唯一原因是因为它没有连接到相机或连接到另一个游戏对象。
猜你喜欢
  • 1970-01-01
  • 2019-12-21
  • 2022-01-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-22
相关资源
最近更新 更多