Хранение векторной анимации XNA - PullRequest
2 голосов
/ 06 февраля 2010

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

Это примерно так:

У меня есть текстура, летящая по экрану от (0,0) до (800 600) пикселей. Это будет длиться 5 с.

Как мне представить это в данных, а также записать так, чтобы игра могла интерпретировать и выполнять необходимые методы Draw и Update. Ничего страшного, если мне нужно сделать обширное кодирование.

Ответы [ 2 ]

1 голос
/ 06 февраля 2010

Простой предметно-ориентированный язык может помочь; создайте класс AnimationDirector, который будет интерпретировать операторы из сценария анимации и выполнять соответствующую работу в течение Draw и Update. Сам DSL может быть таким простым, как

texture 0,0; 800,600; 5.0

, который создаст объект с текстурой texture в точке (0,0) и переместит его в (800 600) в течение 5 секунд, а затем уничтожит его.

Если вы хотите что-то более полезное,

create x texture 0,0
over 5.0 move x 800,600
destroy x

, который позволит вам стать более креативным и расширить возможности анимации (например, добавление вращения и т. Д., Если вы этого хотите).

Теперь, когда вам нужно запустить анимацию, просто передайте соответствующее имя ресурса директору, и пусть он оттуда все обрабатывает. В качестве альтернативы вы можете создать какой-то тип AnimatedEntity, который ссылается на конкретный скрипт и вызывает сам AnimationDirector для Draw и Update; в зависимости от того, как вы работали с двигателем, это может быть более подходящим для его конструкции.

0 голосов
/ 06 февраля 2010

Вот быстрый намек ...

Положение текстуры может быть определено математической формулой, которая даст вам (0,0) во время начала и (800 600) через пять секунд ...

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