Камера для изометрии (2,5D)

Скрипты C# (Unity 3D) для управления камерой в стратегии или изометрическом РПГ. Так же может пригодиться в других случаях, когда надо перемешать камеру вдоль плоской поверхность с помощью мыши.

Скрипт MoveCamera — управляет самой камерой:

private Vector3 _lastPosition;
public Camera MainCamera;  //Здесь подключается камера

public Vector3 LastPosition{
	set{_lastPosition = value;}
	get{return _lastPosition;}
}

void Start () {
	_lastPosition = MainCamera.transform.position;
}

void Update () {
	if (_lastPosition != MainCamera.transform.position){
		MainCamera.transform.position = _lastPosition;
	}
}

Скрипт MouseControl — отслеживает мышь и при необходимости двигает камеру:

private Vector2 _pos;
private bool buttonDown = false;

//Коэффициент смещения камеры, относительно движения мыши.
//Для каждого конкретного случая определяется методом подбора
private float konvert = .05f; 

void Update () {
	Vector2 mouse = Input.mousePosition;

	if (buttonDown){
		Vector2 move = _pos - mouse;
		Vector3 move3 = new Vector3(move.x*konvert, 0, move.y*konvert);
		gameObject.GetComponent<MoveCamera>().LastPosition+= move3;
		_pos = mouse;
	}

	if    (Input.GetMouseButtonDown(0))
	{
		buttonDown = true;
		_pos = mouse;
	}

	if    (Input.GetMouseButtonUp(0)){
		buttonDown = false;
	}
}

Оба скрипта, естественно, должны быть прикреплены к одному из объектов на сцене.

Если для игры не нужна перспектива, то её можно отключить изменив в камере параметр Projection на Orthographic.

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

Камера для изометрии (2,5D): 2 комментария

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

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

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