Как использовать: создать пустой ГО, приаттачить скрипт, придочерить ГО повернутую под углом камеру.
Настройка скрипта: Должен быть создан следующий аксис в Input Manager: "Turn Camera".
Code
/*** Скрипт поведения камеры ***/
var cameraMoveSpeed: float; // скорость передвижения камеры var cameraRotateSpeed: float; // скорость поворота камеры var cameraScrollSpeed: float; // скорость перемещения камеры
var minYPos: float; var maxYPos: float; // минимальная и максимальная высота камеры над землей
private var newPos: Vector3; // новая позиция камеры private var yRot: float = 0; // поворот по оси y
function LateUpdate () { if (!(Input.GetButton("Turn Camera"))) { // зажата ли клавиша перемещения //код перемещения newPos = Vector3.zero;
// проверим, подвел ли юзер курсор мыши к краю экрана if (Input.mousePosition.x <= 5) { newPos = Vector3(transform.position.x - 20, 0, 0); transform.Translate(newPos * cameraMoveSpeed); }
var currentHeight: float; currentHeight = transform.position.y;
var minY = minYPos + (currentHeight - distanceToGround); //исходя из данных RaycastHit, рассчитывает минимальную высоту камеры
// изменить высоту камеры основываясь на заданной скорости currentHeight -= mouseWheel * cameraScrollSpeed * Time.deltaTime;
// проверим позицию на переход допустимых значений if (currentHeight < minY) currentHeight = minY; if (currentHeight > maxYPos) currentHeight = maxYPos;
transform.position = new Vector3(transform.position.x, currentHeight, transform.position.z);
}
Чейнджлог: [code]
v1.1 - камера не пролетает сквозь террайн. v1.2 - небольшие доработки. v2.0 - полная переработка кода, теперь камера не зависит от террайна.