2012-05-04 2 views
1

Я работаю над игрой, сделанной в XNA, C#, и я хочу включить анимацию на основе xml.разрешение независимой сетки для анимации?

XML будет выглядеть следующим образом

<Animation> 
<AnimatedObject> 
<Filename>Spaceship_Jet_01</Filename> 
<Flipped>false</Flipped> 
<StartPosition_X>300</StartPosition_X> 
<StartPosition_Y>500</StartPosition_Y> 
<GOTOPosition_X>650</GOTOPosition_X> 
<GOTOPosition_Y>500</GOTOPosition_Y> 
<Time>10000</Time> 
</AnimatedObject> 
</Animation> 

Это переместит объект в сторону, как это http://imm.io/odc7 (извините координата X неправильно)

Я заметил, что будут проблемы, когда игровое разрешение дисплея отличается от моего, потому что я вводим точную информацию о том, откуда и откуда должен идти объект.

Я думал о сетке, поэтому я могу сказать программе переместить объект из (30,27) в (22,27), например .. Это хорошее решение? Сетка должна быть независимой от разрешения, но количество плиток должно быть постоянным, и я должен нарисовать объект на экране. Это означает, что я должен найти правильное положение пикселя плитки в позиции (22, 27), а затем «переместить» объект на этот фрагмент.

Есть ли лучший способ сделать это? Как я могу решить эту проблему с помощью XNA?

+0

Как насчет вместо установки х и у в пикселях, установите их в процентах где, например, значение 0 для x означает дальний левый, а 1 - далеко правее? Затем вы можете легко вычислить целевую позицию, вы просто сделаете XValue * GraphicsDevice.PresentationParameters.BackBufferWidth; Или что-то вдоль этих линий. – neeKo

ответ

0

Если вы используете 2D-камеру, у вас не будет проблем ... потому что вычисление нового вида для адаптации к новому разрешению не сложно ... и вы не должны ничего менять с помощью своих методов загрузки ни логики ...

Вы можете сделать, но я не люблю

  1. Работа с позициями в [0..1] диапазоне, трудно измерить.

  2. Зафиксируйте положение с новым коэффициентом разрешения при загрузке XML ... некрасиво ...

    Pos *= NewResolutionSize/DefaultResolutionSize; 
    
+0

Благодарим вас Pos * = NewResolutionSize/DefaultResolutionSize; решил мою проблему – Wolfen

+0

Тогда вы должны отметить ответ как правильно ...;) – Blau

Смежные вопросы