Как переместить «спрайт» более плавно в C # - PullRequest
0 голосов
/ 27 июня 2019

Я получил Picturebox для перемещения с помощью клавиш (W, A, S, D), но он очень изменчив, и вы можете нажимать только клавишу одновременно. Можно ли как-то плавнее перемещать «спрайт»?

Это мой код, который я пробовал:

    private void Form1_KeyPress(object sender, KeyPressEventArgs e)
    {
        int offset = 10;
        if (e.KeyChar == 'a')
        {
            pictureBox1.Location = new Point(pictureBox1.Location.X - offset, pictureBox1.Location.Y);
        }
        else if (e.KeyChar == 'w')
        {
            pictureBox1.Location = new Point(pictureBox1.Location.X, pictureBox1.Location.Y - offset);
        }
        else if (e.KeyChar == 's')
        {
            pictureBox1.Location = new Point(pictureBox1.Location.X, pictureBox1.Location.Y + offset);
        }
        else if (e.KeyChar == 'd')
        {
            pictureBox1.Location = new Point(pictureBox1.Location.X + offset, pictureBox1.Location.Y);
        }
    }

Ответы [ 2 ]

0 голосов
/ 27 июня 2019

Чтобы выйти за пределы Бабака и ответить на другую часть (нажимая только по одной клавише за раз), измените другое if на ряд выражений if. В противном случае, если он выпадает из последовательности, как только одна из них верна, то есть, если вы нажмете одну клавишу, он не будет искать другие.

0 голосов
/ 27 июня 2019

Возможно, лучше обновить внутреннее местоположение, а не присваивать ему новое значение, вызвав pictureBox1.Location.Translate(offset, offset);

См. https://docs.microsoft.com/en-us/dotnet/api/system.drawing.point.offset?view=netframework-4.8#System_Drawing_Point_Offset_System_Int32_System_Int32_

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...