как перевернуть спрайт в c # - PullRequest
4 голосов
/ 27 мая 2011

Я делаю небольшую игру, основанную на учебном руководстве по разработке игр для XNA "шутер" ... после проб и ошибок я создал свой собственный анимированный спрайт, который я могу перемещать по экрану. Проблема в том, что он всегда стоит направо.

Как я могу изменить это (изображение ниже), чтобы он смотрел в правильном направлении при каждом нажатии клавиши?!

Я довольно новичок в C #, как вы уже догадались, и я понимаю, что это может быть сложнее, чем я думал, поэтому мне просто нужно знать, как сделать спрайт лицом вправо при движении вправо и влево, когда он двигается влево .

изображение

Заранее спасибо.

Ответы [ 3 ]

5 голосов
/ 27 мая 2011

Вы также можете сделать это, передав опцию SpriteEffects.FlipHorizontally своему методу SpriteBatch.Draw().Но, как говорили другие, это потребует больше ресурсов, чем использование спрайтов.

2 голосов
/ 27 мая 2011

Обычно спрайт-лист содержит изображения для каждого направления. Вы можете перевернуть изображение во время выполнения, но это добавляет ненужную обработку изображения. Я бы посоветовал вам просто создать спрайт-лист с каждой запеченной анимацией и выяснить, какой кадр отображать во время выполнения.

См. Пример простого спрайт-листа здесь

0 голосов
/ 19 июля 2014
SpriteEffects s = SpriteEffects.FlipHorizontally;
int smX = 200; //smx is the 'x' coordinates.

    public void runChar()
    {
        if (Keyboard.GetState().IsKeyDown(Keys.Left))
        {
            smX -= 2;
            s = SpriteEffects.FlipHorizontally;
            //oposite direction.
        }
        else if (Keyboard.GetState().IsKeyDown(Keys.Right))
        {
            smX += 2;
            s = SpriteEffects.None;
            //original direction.
        }
    }

spriteBatch.Draw(sM, new Rectangle(smX, 200, 100, 100), null, Color.White, rotation, new Vector2(50, 50), s, 0f);

Это «перевернет» текстуру влево и вправо.

...