Топ-даун шутер, отслеживание курсора

Top-Down Shooter или проще говоря «игра с видом сверху». Если говорить конкретней, то для примера возьмем игру Hotline Miami и подобные. В общем, любая игра, где персонаж, которым управляет игрок, «следит» за курсором мышки и вращается вокруг своей оси. Реализация такого проекта может быть как обычным двухмерным, когда не используется Z или же, трехмерный без использования Y, то есть, это будет та же самая плоскость, но вместо XY у нас XZ. А разница заключается в том, что во втором случаи, можно создать карту навигации для ботов.



Для любого из нижеприведенных вариантов, нам надо с начала получить Transform камеры, это необходимо, чтобы правильно определялась позиция курсора. В зависимости от проекта, будем обращаться к Z или Y. К тому-же, даже если камера будет приближаться или отдаляться по соответствующим осям, никаких проблем не должно возникнуть.

private Transform cameraPos;

void Start ()
{
	cameraPos = GameObject.FindGameObjectWithTag("MainCamera").transform;
}

Обратите внимание, у камеры должен быть стандартный тег "MainCamera", ну или укажите тот, который у вас.

2D проект

Стандартный двухмерный проект Unity, вращение камеры отсутствует, позиция по Z может быть только отрицательного значения.

Топ-даун шутер, отслеживание курсора

void Update () 
{
	Vector3 mousePosMain = Input.mousePosition;
	mousePosMain.z = Mathf.Abs(cameraPos.position.z);
	Vector3 lookPos = Camera.main.ScreenToWorldPoint(mousePosMain);
	lookPos = lookPos - transform.position;
	float angle  = Mathf.Atan2(lookPos.y, lookPos.x) * Mathf.Rad2Deg;
	transform.rotation = Quaternion.AngleAxis(angle, Vector3.forward);
}

3D проект


Камера по Х повернута на 90, дальность расположения регулируется теперь через Y.


void Update () 
{
	Vector3 mousePosMain = Input.mousePosition;
	mousePosMain.z = cameraPos.position.y;
	Vector3 curPosition = Camera.main.ScreenToWorldPoint(mousePosMain);
	Vector3 lookPos = curPosition - transform.position;
	lookPos.y = 0;
	transform.rotation = Quaternion.LookRotation(lookPos);
}

Вот в целом, как-то так.
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.
  • Яндекс.Метрика