Перемещение 2D персонажа вид сверху

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

Перемещение 2D персонажа вид сверху

Сообщение MrDmitry 16 июл 2019, 17:56

Здравствуйте, делаю простенькую бродилку с видом сверху и сразу же возник вопрос. Сделал перемещение персонажа следующим образом

Синтаксис:
Используется csharp
public float speed = 5f;
private Rigidbody2D body;
private Vector2 Movement;

void Start () {
        body = GetComponent<Rigidbody2D>();
    }
       
        void Update () {
        float MoveX = Input.GetAxis('Horizontal');
        float MoveY = Input.GetAxis('Vertical');
        Movement = new Vector2(MoveX * speed, MoveY * speed);
        if (MoveX == 1)
            rotate(0);
        if (MoveY == 1)
            rotate(1);
        if (MoveX == -1)
            rotate(2);
        if (MoveY == -1)
            rotate(3);
       }

void FixedUpdate()
    {
        body.velocity = Movement;
    }

//0 - смотрим в право
    //1 - смотрим в вверх
    //2 - смотрим на лево
    //3 - смотрим в низ
    private void rotate(byte side)
    {
        if (side == 0)
            transform.rotation = Quaternion.Euler(gameObject.transform.rotation.x, gameObject.transform.rotation.y,-90);
        if (side == 1)
            transform.rotation = Quaternion.Euler(gameObject.transform.rotation.x, gameObject.transform.rotation.y, 0);
        if (side == 2)
            transform.rotation = Quaternion.Euler(gameObject.transform.rotation.x, gameObject.transform.rotation.y, 90);
        if (side == 3)
            transform.rotation = Quaternion.Euler(gameObject.transform.rotation.x, gameObject.transform.rotation.y, 180);
    }


И вроде бы персонаж перемещается, но если нажать одновременно две кнопки, например влево и в низ, то после того как мы отпустим их, персонаж начинает вращаться... Так же персонаж вращается при столкновении с углом кого либо объекта.

Почему то все скобки в коде заменились на коды. Форум глючит (
MrDmitry
UNITрон
 
Сообщения: 223
Зарегистрирован: 05 авг 2017, 17:21

Re: Перемещение 2D персонажа вид сверху

Сообщение Susanin 17 июл 2019, 00:54

То есть отпускаете две клавиши и объект сам вращается?

Вот у вас при одновременном нажатии двух клавиш вызывается 2 раза ф-я rotate - не приводит ли это к глюку и не надо ли ввести промежуточный вариант поворота?
Susanin
UNIт
 
Сообщения: 120
Зарегистрирован: 11 дек 2015, 10:52

Re: Перемещение 2D персонажа вид сверху

Сообщение MrDmitry 17 июл 2019, 16:48

Да если нажать одновременно две клавиши а потом отпустить, персонаж начинает вращение, также он начинает вращаться если задеть угол какого либо объекта.
MrDmitry
UNITрон
 
Сообщения: 223
Зарегистрирован: 05 авг 2017, 17:21

Re: Перемещение 2D персонажа вид сверху

Сообщение Susanin 17 июл 2019, 18:54

MrDmitry писал(а):Да если нажать одновременно две клавиши а потом отпустить, персонаж начинает вращение, также он начинает вращаться если задеть угол какого либо объекта.

Использовал ваш код:
htt ps:/ /yadi.sk/d/svBaY ABcQr0Iug

как видите никаких вращений при 2 клавишах нет.

значит проблема не в коде.
Susanin
UNIт
 
Сообщения: 120
Зарегистрирован: 11 дек 2015, 10:52


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

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

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