Страница 1 из 1

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

СообщениеДобавлено: 21 мар 2019, 21:04
Devane1488
Здравствуйте! Пишу симулятор фермы и не могу заставить персонажа поворачиваться за курсором, мне нужно чтобы персонаж поворачивался лишь в 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);
        }
    }
 

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

СообщениеДобавлено: 21 мар 2019, 21:13
Woolf
хм, а LookAt не вариант?

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

СообщениеДобавлено: 21 мар 2019, 21:39
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);

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

СообщениеДобавлено: 21 мар 2019, 21:59
Devane1488
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 Камера вид сверху говоря другими словами.
Вставил ваш код и он работает лишь частично, персонаж не реагирует на смещение мыши влево или право .