Unity3d нисходящее управление камерой - PullRequest
0 голосов
/ 08 марта 2019

У меня есть нисходящая игра в Unity3D , где игрок может управлять автомобилем. На данный момент камера удерживает автомобиль в центре экрана и вращается в направлении, на которое указывает автомобиль.

Вот как я это сделал:

public class CameraFollowController : MonoBehaviour
{
    private void FixedUpdate()
    {
        transform.rotation = Quaternion.Euler(90, car.rotation.eulerAngles.y + 90, 90);
        transform.position = new Vector3(car.position.x, cameraHeight, car.position.z);
    }

    public Transform car;
    public float cameraHeight = 10;
}

Я хочу сместить положение камеры, чтобы машина всегда находилась внизу экрана:

enter image description here

Как это сделать?

Ответы [ 2 ]

2 голосов
/ 08 марта 2019

Если автомобиль движется по оси x / y, вы можете использовать transform.forward, чтобы определить направление движения автомобиля, а затем отрегулировать его.

public float distance; // How much you want to offset

// Get the direction of the car
Vector3 dir = car.transform.forward;

// Offset the position
transform.position += -dir * distance;
0 голосов
/ 08 марта 2019

Похоже, вы пытаетесь сместить положение камеры на оси Z.

Что вам нужно сделать, так это выяснить, каково смещение положения для автомобиля в нижней части экрана, и применить его в качестве смещения по оси Z в цикле FixedUpdate().

transform.position = new Vector3(car.position.x, cameraHeight, car.position.z *-/+* zCamOffset);

Довольно простой и грубый способ выяснить это смещение состоит в том, чтобы в режиме игры переместить автомобиль GameObject так, чтобы он находился в месте, расположенном вдоль нижней части игрового окна. Затем используйте значение по оси Z компонента преобразования для автомобильного GameObject в качестве грубого смещения.

Удачи!

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