Лучший подход к анимации физики в Silverlight? - PullRequest
3 голосов
/ 02 ноября 2009

Я новичок в Silverlight и хочу анимировать шар, который выстрелили из пушки, а затем движется по воздуху по законам физики (примерно, по эллиптическому пути).

Я склонен использовать таймер обратного вызова и перемещать шарик каждые 50 мс, изменяя его значения Canvas.LeftProperty и Canvas.TopProperty. Это правильный подход или я должен использовать DoubleAnimation? Мое сопротивление использованию анимаций здесь заключается в том, что мне придется создавать много разных анимаций подряд.

Какой путь выберет гуру Silverlight?

Ответы [ 3 ]

2 голосов
/ 02 ноября 2009

Может быть, немного излишне, если вы знаете о физическом помощнике библиотекаре

2 голосов
/ 02 ноября 2009

Посмотрите на вопрос, который я задал некоторое время назад здесь В принятом ответе дается сравнение пяти различных способов сделать анимацию для игр в Silverlight со ссылкой на этот блог . В статье делается вывод, что выбранный вами метод будет зависеть от ряда факторов.

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

Я также нашел Физика игры 101 действительно хороший ресурс.

1 голос
/ 02 ноября 2009

Не думаю, что вам придется создавать несколько анимаций подряд. Мяч меняет направление только один раз.

Значение Y снижается (при этом мяч выглядит так, как будто он идет вверх), а затем идет вверх (при этом мяч выглядит так, как будто он идет вниз). Замедление при снижении должно быть постоянным (что составляет 9,8 м / с / с), а ускорение при увеличении значения Y (пушечное ядро ​​снижается) постоянно, пока не достигнет точки, представляющей землю.

Значение X должно быть постоянным, иначе оно должно немного замедляться, если учитывать сопротивление воздуха.

Поэтому вы бы отработали следующее:

  • Где это начинается (пушка, очевидно)
  • Где мяч попадает в вертикальную вершину
  • Где мяч ударяется о землю

Так что теперь вы можете анимировать значение Y в качестве начального значения, конечного значения и одной путевой точки.

И вы можете анимировать значение X, используя только начало и конец.

Конечно, для определения точных чисел, которые необходимо ввести в AccelerationRatio , DecelerationRatio , SpeedRatio , , потребуется нетривиальная математика Длительность , От и до параметров. Но вам придется решать это независимо от того, какой метод вы используете.

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