在Unity中移动摄像头的问题

3
我的问题是我想让相机朝向地面,但仍然可以在水平方向上移动。问题在于,当我将相机向前移动时,因为它已被指向地面,所以其本地 z 轴穿过了地面。因此,当您向前移动相机时,它会遵循此轴并降落到地面上。
我该如何使相机朝向地面但仍保持水平轴?
我的Unity版本是3.4,不是专业版,并且我正在使用C#编码。
由于我刚开始尝试学习Unity,任何帮助都将不胜感激。
1个回答

3

我猜你正在使用Camera.transform.translate?如果是这样,请修改你的脚本,做出类似以下的操作:

Vector3 pos = Camera.transform.position;
pos += new Vector3(1,0,1); //Translate 1 unit on x, and 1 unit on z
Camera.transform.position = pos;

为了提供更完整的示例,这是我的MouseLook()代码:

    void MoveCamera(){
    Vector3 oPos = this.transform.position;
    Vector3 newPos = this.transform.position + Translation;
    Vector3 forward = Camera.main.transform.forward;
    Vector3 sideways = Camera.main.transform.right;
    Vector3 up = Camera.main.transform.up;

    newPos = oPos + forward * Translation.z;
    newPos = newPos + sideways * Translation.x;


    if(!_isMouseLook){
        //not mouse look so reset position to original height. 
        //Still apply a Translation as it is tied to the mouse wheel.
        newPos.y = oPos.y + Translation.y;
    } else {
        newPos.y = newPos.y + Translation.y;
    }
    //Clamp height between terrain floor + camera offset and some max height C.
    newPos.y = Mathf.Clamp(newPos.y,Terrain.activeTerrain.SampleHeight(oPos),MaxHeight);
    this.transform.position = newPos;

    //Reset translation values
    Translation = new Vector3(0,0,0);
}

这并不包含我所有的代码,但我想你能理解要点。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接