- 最后登录
- 2018-6-29
- 注册时间
- 2011-7-1
- 阅读权限
- 20
- 积分
- 359
- 纳金币
- 335582
- 精华
- 0
|
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);
}
if (Input.mousePosition.y <= 5) {
newPos = Vector3(0, 0, transform.position.z - 3);
transform.Translate(-newPos * cameraMoveSpeed);
}
if (Input.mousePosition.x >= (Screen.width - 5) ) {
newPos = Vector3(transform.position.x + 20, 0, 0);
transform.Translate(newPos * cameraMoveSpeed);
}
if (Input.mousePosition.y >= (Screen.height - 5)) {
newPos = Vector3(0, 0, transform.position.z + 3);
transform.Translate(newPos * cameraMoveSpeed);
}
}
else {
yRot -= Input.GetAxis("Mouse X") * cameraRotateSpeed * -0.02;
var rotation = Quaternion.Euler(0, yRot, 0);
transform.rotation = rotation;
}
var mouseWheel: float = Input.GetAxis("Mouse ScrollWheel");
// проверим нижнюю точку под камерой
var hit : RaycastHit;
var distanceToGround: float;
if (Physics.Raycast (transform.position, -Vector3.up, hit, transform.position.y * 2)) { // посылаем рэйкаст вниз
distanceToGround = hit.distance;
}
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);
}
|
|