Поворот персонажа в сторону курсора

Программирование на Юнити.

Поворот персонажа в сторону курсора

Сообщение Devane1488 21 мар 2019, 21:04

Здравствуйте! Пишу симулятор фермы и не могу заставить персонажа поворачиваться за курсором, мне нужно чтобы персонаж поворачивался лишь в 4 стороны (верх,вниз,влево,вправо). я считаю позицию курсора относительно центра экрана по формуле:
Синтаксис:
Используется csharp
        mousePos_X = Screen.width / 2 - Input.mousePosition.x;
        mousePos_Y = Screen.height / 2 - Input.mousePosition.y;

        Debug.Log("Ось X" + mousePos_X + "Ось Y" + mousePos_Y);
 


Вот так я пытаюсь повернуть персонажа но, координаты не правильные:
Синтаксис:
Используется csharp
void RotatePlayer()
    {
        if (mousePos_X <= 0 && mousePos_Y <= 13)//RIGHT
        {
            Debug.Log("RIGHT");
            PlayerPos.rotation = Quaternion.Euler(0, 0, 90);
        }
        if (mousePos_X >= 0 && mousePos_Y >= 30)//LEFT
        {
            Debug.Log("LEFT");
            PlayerPos.rotation = Quaternion.Euler(0, 0, -90);
        }

        if (mousePos_X >= -48 && mousePos_Y <= 0)//UP
        {
            Debug.Log("UP");
            PlayerPos.rotation = Quaternion.Euler(0, 0, -180);
        }
        if (mousePos_X <= 43 && mousePos_Y >= 0)//DOWN
        {
            Debug.Log("DOWN");
            PlayerPos.rotation = Quaternion.Euler(0, 0, 180);
        }
    }
 
Devane1488
UNец
 
Сообщения: 12
Зарегистрирован: 21 мар 2019, 20:47

Re: Поворот персонажа в сторону курсора

Сообщение Woolf 21 мар 2019, 21:13

хм, а LookAt не вариант?
Разработчик theFisherOnline - там, где клюёт
Разработчик Atom Fishing II - Первая 3D MMO про рыбалку
Разработчик Atom Fishing - Рыбалка на поплавок, донку, нахлыст, блесну в постъядерный период.
Аватара пользователя
Woolf
Адепт
 
Сообщения: 7179
Зарегистрирован: 02 мар 2009, 16:59

Re: Поворот персонажа в сторону курсора

Сообщение 1max1 21 мар 2019, 21:39

Синтаксис:
Используется csharp
mousePos_X = Screen.width / 2 - Input.mousePosition.x;

К чему эти махинации с половиной ширины и высоты?
Персонаж судя по всему 2д. Тогда почему бы не сделать типа:
Синтаксис:
Используется csharp
var mp = Camera.main.ScreenToWorldPoint(Input.mousePosition);
if (mp.x > player.position.x)
    player.eulerAngles = new Vector3(0.0f, 0.0f, 90.0f);
if (mp.x < player.position.x)
    player.eulerAngles = new Vector3(0.0f, 0.0f, -90.0f);
if (mp.y > player.position.y)
    player.eulerAngles = new Vector3(0.0f, 0.0f, 0.0f);
if (mp.y < player.position.y)
    player.eulerAngles = new Vector3(0.0f, 0.0f, 180.0f);
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: Поворот персонажа в сторону курсора

Сообщение Devane1488 21 мар 2019, 21:59

1max1 писал(а):
Синтаксис:
Используется csharp
mousePos_X = Screen.width / 2 - Input.mousePosition.x;

К чему эти махинации с половиной ширины и высоты?
Персонаж судя по всему 2д. Тогда почему бы не сделать типа:
Синтаксис:
Используется csharp
var mp = Camera.main.ScreenToWorldPoint(Input.mousePosition);
if (mp.x > player.position.x)
    player.eulerAngles = new Vector3(0.0f, 0.0f, 90.0f);
if (mp.x < player.position.x)
    player.eulerAngles = new Vector3(0.0f, 0.0f, -90.0f);
if (mp.y > player.position.y)
    player.eulerAngles = new Vector3(0.0f, 0.0f, 0.0f);
if (mp.y < player.position.y)
    player.eulerAngles = new Vector3(0.0f, 0.0f, 180.0f);


Извиняюсь, что не уточнил это ранее но, у меня top-down Камера вид сверху говоря другими словами.
Вставил ваш код и он работает лишь частично, персонаж не реагирует на смещение мыши влево или право .
Devane1488
UNец
 
Сообщения: 12
Зарегистрирован: 21 мар 2019, 20:47


Вернуться в Скрипты

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 14