Камера от 3-го лица

Различных вариантов реализации камеры от третьего лица можно найти много. Начиная от базового в самом 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);
}

Вращение камеры при зажатой ПКМ с ограничением угла подъема и опускания камеры. Отдаление и приближение камеры с помощью колёсика мыши, так же с ограничением по дальности.

Скачать пример (333)

Камера от 3-го лица: Один комментарий

  1. Kartero

    По умолчанию камера расположена за спиной вашего персонажа, но вы всегда можете перейти в режим боя от 1-го лица.

Добавить комментарий

Ваш e-mail не будет опубликован.

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>