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

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

СообщениеДобавлено: 16 июл 2019, 17:56
MrDmitry
Здравствуйте, делаю простенькую бродилку с видом сверху и сразу же возник вопрос. Сделал перемещение персонажа следующим образом

Синтаксис:
Используется 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);
    }


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

Почему то все скобки в коде заменились на коды. Форум глючит (

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

СообщениеДобавлено: 17 июл 2019, 00:54
Susanin
То есть отпускаете две клавиши и объект сам вращается?

Вот у вас при одновременном нажатии двух клавиш вызывается 2 раза ф-я rotate - не приводит ли это к глюку и не надо ли ввести промежуточный вариант поворота?

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

СообщениеДобавлено: 17 июл 2019, 16:48
MrDmitry
Да если нажать одновременно две клавиши а потом отпустить, персонаж начинает вращение, также он начинает вращаться если задеть угол какого либо объекта.

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

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

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

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

значит проблема не в коде.