Оболочка SDL.NET: как повернуть спрайт?

Я пытаюсь разработать свою первую и простую видеоигру. Я использую SDL.NET (оболочку .NET известного SDL) и С#.

Я пытаюсь повернуть свой спрайт (мой «автомобиль»), когда пользователь нажимает массив вниз, массив вверх. Я использую что-то вроде

this.Surface =  this.Surface.CreateRotatedSurface(90);

Но это не работает! У меня ошибка на экране... :(

Я знаю, что могу использовать что-то вроде

this.Surface = new Surface("my-sprite-right.png") // for right

или this.surface = new Surface("my-sprite-left.png") // для левого

а мне такое решение не нравится...

Кто-нибудь знает, как управлять "вращением" спрайта?

Благодарю вас !


sdl
person stighy    schedule 16.10.2010    source источник
comment
Что именно за ошибка на экране?   -  person genpfault    schedule 18.10.2010


Ответы (1)


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

  1. Создайте новый экземпляр спрайта, например Surface myCarRotated = myCar.CreateRotatedSurface(int 90, true);
  2. Затем перенесите новую поверхность на экран
  3. Наконец, вызовите метод video.Update(), чтобы обновить экран.

Поскольку автомобиль будет сильно трансформироваться (ну, в основном вращение и скорость), лучше написать всю свою логику в отдельном методе.

Обратите внимание, что повороты сильно нагружают ваш процессор, вы можете рассмотреть возможность создания изображений вращения в виде листа спрайтов, как описано здесь: http://egonrath.eg.funpic.de/old/sdl/sdlnet.html#clipblitting

Но я не думаю, что в наше время это будет иметь большое значение, пока у вас нет 1000 вращающихся машин.

У меня мало опыта работы с sdl.net, но он мне очень нравится. Я попробовал пару игровых движков C#, и мне это очень понравилось. В настоящее время я создаю (пытаюсь создать;) приложение, которое отслеживает позиции игроков во время живой игры Unreal Tournament. Вид приложения типа мини-карты.

Удачи!

person Mark    schedule 20.02.2011