2017-08-29 64 views
0

我遇到了一个我认为会是一个相对简单的问题的障碍。我想通过按“Q”和“E”键在Z轴上“滚动”摄像机。使用键盘在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键时,绝对没有任何反应。为什么?

+0

请不要说“没有任何反应”。这段代码甚至不应该编译,因为'localRotation'没有声明。值得注意的是[Unityscript](https://stackoverflow.com/questions/45523239/is-unityscript-javascript-discontinued?s=1|5.6699)已停用。您可能想切换到开始询问C#问题。 – Programmer

+0

我说“没有任何反应”,因为从字面上看什么都没发生。当我提出这个问题时,我忘了复制'localRotation',但代码确实编译得很好。我使用Unityscript作为个人偏好,我不认为不使用C#是导致我现在面临的问题的原因,但我会在将来的问题中记住这一点。 – JavascriptLoser

+0

我见过有人发布的代码甚至没有在这里编译。所以我虽然是其中之一。我提到C#作为您未来问题的通知。 – Programmer

回答

0

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

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

+0

我发现问题是另一段代码干扰z旋转,但我会将你的标记标记为已接受。 – JavascriptLoser

+0

这是另一个可能的原因,如果z从另一个脚本被更改,否则,您的问题中的代码可能无法正常工作的唯一原因是因为它不附加到相机或附加到另一个gameobject。 – Programmer