Анимация парусника: с помощью мыши поверните руль влево, лодка повернет направо и наоборот - PullRequest
1 голос
/ 31 марта 2011

Я пытаюсь создать анимацию, которая покажет основы управления парусной лодкой.Идея состоит в том, что будет вид сверху лодки с очень выраженным рулем и рулем.Я хочу, чтобы учащийся мог щелкнуть и перетащить румпель в одном или другом направлении, в то время как рулевое колесо движется. Я хочу, чтобы руль и лодка поворачивали правильное направление.Например, я хочу, чтобы лодка шла налево, я подтолкну руль к правому борту, руль повернется по часовой стрелке, и лодка повернет налево.В моей голове не должно быть движения вперед, я думаю, что пока лодка вращается, все будет в порядке.Любая помощь или ресурсы будут оценены.

Ответы [ 2 ]

3 голосов
/ 31 марта 2011

Я думаю, что вам действительно нужно думать о моделировании.Создать не-UI представление парусной лодки.Создайте свой код так, чтобы при перемещении румпеля (без мыши ... только через интерфейс вашей модели) модель вашей лодки двигалась.Актеры и атрибуты модели могут включать:

  • Направление и сила вектора ветра
  • Направление румпеля
  • Направление паруса
  • Направление румпеля
  • Направление и сила вектора лодки
  • Размер / форма паруса
  • Длина лодки
  • Коэффициент трения междуЛодка и вода
  • Масса лодки
  • Размер волн

Конечно, чем дальше вы перейдете к факторам вашей модели, тем лучше ее уточнитеповедение все больше и больше.Я рекомендую добавить модульные тесты, чтобы управлять этим поведением.Остановитесь на любом уровне детализации, наиболее подходящем для точности вашей модели.

Как только у вас есть хорошая модель, становится гораздо проще и проще подключить ее к графическим ресурсам.Например, вы можете вращать изображение лодки или румпеля на основе углов, которые вы выставили в своей модели, используя преобразование вращения.То же самое относится и к углу паруса или скорости, с которой вы перемещаете водную анимацию.

Этот подход позволяет вам создавать анимацию отдельно от поведения лодки.

Удачи!

0 голосов
/ 31 марта 2011

Хорошо - если вы знаете основы программного преобразования объектов displayObject, это не должно быть слишком сложным для выполнения

Я мог бы сделать это так:

Создание графики для ваших различных элементов. По сути, вы собираетесь управлять свойством вращения этих объектов, поэтому ваши точки перевода должны быть правильно установлены в точке вращения.

Как только это настроено, это так же просто, как добавить прослушиватель событий мыши вниз к румпелю и проверить дельта-изменение в mouseX, пока мышь не будет зарегистрирована.

Во время цикла анимации (когда мышь нажата), просто примените различные степени поворота (в зависимости от изменения дельты mouseX) к вашим трем объектам. IE: если мышь перетащить влево, поверните рукоятку, чтобы соответствовать, руль направления в противоположном направлении и родитель (лодка) также влево.

Это, очевидно, очень элементарно, но должно создать разумный аналог вашего намерения ...

Надеюсь, это поможет

...