纳金网
标题:
Unity3D RTS Camera
[打印本页]
作者:
晃晃
时间:
2011-11-16 17:26
标题:
Unity3D RTS Camera
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);
}
作者:
C.R.CAN
时间:
2012-3-3 23:19
此地無銀。。。
作者:
C.R.CAN
时间:
2012-4-3 23:29
很有心,部分已收录自用,谢谢
作者:
奇
时间:
2012-4-10 23:29
这么后现代
作者:
tc
时间:
2012-5-14 23:18
真是不错啊
作者:
晃晃
时间:
2012-5-30 23:26
好`我顶``顶顶
作者:
奇
时间:
2012-6-20 23:20
我是老实人,我来也!
作者:
C.R.CAN
时间:
2012-6-27 23:26
不错哦,谢谢楼主
作者:
晃晃
时间:
2012-7-14 23:27
佩服,好多阿 ,哈哈
作者:
奇
时间:
2012-8-11 00:08
都闪开,介个帖子,偶来顶
作者:
C.R.CAN
时间:
2012-9-4 23:25
都闪开,介个帖子,偶来顶
作者:
晃晃
时间:
2013-2-5 23:20
顶!学习了!阅!
欢迎光临 纳金网 (http://rs.narkii.com/club/)
Powered by Discuz! X2.5