2012-05-04 69 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

怎麼樣,而不是在像素設置X和Y,它們設置在百分比例如,x的0值意味着最左邊,1意味着最右邊?然後你可以很容易地計算出目標位置,你只需做XValue * GraphicsDevice.PresentationParameters.BackBufferWidth;或類似的規定。 – neeKo

回答

0

如果您使用2D相機,您不會有任何問題...因爲計算新視圖以使其適應新的分辨率並不難....並且您不必更改任何加載方法也不是邏輯...

你可以這樣做,但我不`噸喜歡

  1. 在[0..1]範圍的位置工作,很難衡量。

  2. 修復與新的決議因素的位置,當你加載XML ...是醜陋的...

    Pos *= NewResolutionSize/DefaultResolutionSize; 
    
+0

謝謝你Pos * = NewResolutionSize/DefaultResolutionSize; 解決了我的問題 – Wolfen

+0

那麼你應該把答案標記爲正確的......;) – Blau