我正在XNA C#上工作,當我遇到這個問題時,我需要存儲容易編輯的動畫數據,以便我的遊戲能夠渲染和播放它。存儲矢量XNA動畫
這件事情是這樣的:
我有一個紋理從(0,0)在屏幕飛往(800,600)像素。這將持續5秒。
如何代表它的數據,並把它寫使得遊戲能夠解釋,並做必要的Draw
和Update
方法。沒關係,如果我需要做一些廣泛的編碼。
我正在XNA C#上工作,當我遇到這個問題時,我需要存儲容易編輯的動畫數據,以便我的遊戲能夠渲染和播放它。存儲矢量XNA動畫
這件事情是這樣的:
我有一個紋理從(0,0)在屏幕飛往(800,600)像素。這將持續5秒。
如何代表它的數據,並把它寫使得遊戲能夠解釋,並做必要的Draw
和Update
方法。沒關係,如果我需要做一些廣泛的編碼。
一個簡單的域特定語言可以幫助;創建一個AnimationDirector類,它將解釋動畫腳本中的語句,並在Draw
和Update
期間執行相應的工作。所述DSL本身可以是一樣簡單
texture 0,0; 800,600; 5.0
這將創造在(0,0)具有質感texture
一個對象,並將其在5第二週期移動至(800600),然後破壞它。
如果你想要的東西多一點有用的,
create x texture 0,0
over 5.0 move x 800,600
destroy x
這將讓你獲得更多的創造性,擴大動漫的可能性(如添加旋轉等,如果你渴望這樣)。
現在,當您需要運行動畫時,只需將相應的資源名稱傳遞給導演,然後讓它從那裏處理事情。或者,您可以創建某種引用特定腳本的AnimatedEntity,並調用動畫導演本身Draw
和Update
;取決於你迄今爲止如何完成發動機,這可能更適合其設計。
這裏有一個快速提示...
紋理的位置可以用一個數學公式,它會給你(0,0)的開始時間(800,600)5秒鐘後進行定義和。 ..
我知道如何用數學公式來定義它。然而,所存儲的數據應該易於編輯(即人們可以輕鬆讀取而不需要考慮),並且還有幾個動畫一起運行 – mauris 2010-02-06 07:36:56
如果您將動畫存儲爲XML,那麼您可以通過內容管道 – Martin 2010-02-06 20:35:31
加載它們,您無法真正定義XML中的許多不同的動畫和轉換嗎? – mauris 2010-02-07 00:32:43
@Martin:如果項目要在普通PC以外的平臺上運行,任何腳本動畫都必須通過內容管道傳輸,無論它們是否以XML格式完成。將XML用於動畫的結構DSL與純文本相比沒有任何優勢。 – 2010-02-07 09:36:18