Posted on 09.01.2013, 19:47 By Shad
Различных вариантов реализации камеры от третьего лица можно найти много. Начиная от базового в самом Unity, и далее до бесконечности на различных тематических форумах. Добавлю свои 5 копеек в это разнообразие.
Скрипт CameraControl:
public GameObject _camera;
//Настройки камеры
private float x = 135f;
private float y = 45f;
private float distance = 3.0f;
private float minDist = 2.0f;
private float maxDist = 6.0f;
private float xSpeed = 250.0f;
private float ySpeed = 120.0f;
private float yMinLimit = 10f;
private float yMaxLimit = 60;
void Update() {
if (Input.GetMouseButton(1)){
x += (float)(Input.GetAxis("Mouse X") * xSpeed * 0.02);
y -= (float)(Input.GetAxis("Mouse Y") * ySpeed * 0.02);
}
distance += -(Input.GetAxis("Mouse ScrollWheel"));
if (distance < minDist) distance = minDist;
if (distance > maxDist) distance = maxDist;
y = ClampAngle(y, yMinLimit, yMaxLimit);
Quaternion rotation = Quaternion.Euler(y, x, 0);
Vector3 position = (Vector3)(rotation * new Vector3(0.0f, 0.0f, -distance));
_camera.transform.rotation = rotation;
_camera.transform.position = position;
}
float ClampAngle (float angle, float min, float max) {
if (angle < -360)
angle += 360;
if (angle > 360)
angle -= 360;
return Mathf.Clamp (angle, min, max);
}
Вращение камеры при зажатой ПКМ с ограничением угла подъема и опускания камеры. Отдаление и приближение камеры с помощью колёсика мыши, так же с ограничением по дальности.
Скачать пример (2845 Загрузок ) Categories: Ресурсы Метки: C#, Camera, Unity 3D
