Проблемы с перемещением камеры в единстве - PullRequest
3 голосов
/ 01 декабря 2011

Моя проблема в том, что я хочу направить свою камеру к земле, но все равно перемещать ее горизонтально. Проблема в том, что я перемещаю камеру вперед, потому что она была направлена ​​под углом к ​​земле, а ее локальная ось z проходит через землю. Поэтому, когда вы перемещаете камеру вперед, она следует за этой осью и опускается на землю.

Как бы я направил камеру на землю, но сохранил бы горизонтальную ось?

У меня версия Unity 3.4, она не профессиональная, и я пишу код на C #.

Любая помощь оценена, поскольку я только начал пытаться учиться единству.

1 Ответ

3 голосов
/ 01 декабря 2011

Я полагаю, вы используете 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);
}

, который не содержит всемой код, но я думаю, вы понимаете суть.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...