Silverlight 遊戲開發小技巧:晝夜交替動畫

記得在WP7上玩一個遊戲有段動畫很有趣,是背景在進行晝夜交替,一會兒白天太陽出來白天了,一會兒月亮蹦出來夜晚了,在以前做C++程序的時候曾經實現過類似的效果,今天早上移植了一下到Silverlight當中效果還是不錯,當然了,有了Blend神器,就完全不用通過代碼的方式實現,真的方便了很多。

以前的效果預覽:

 

由於條件所限定,本篇中實現的效果僅僅爲一個引子,更細的細節,還需要自行製作,請注意,本篇的程序尺寸爲600x400的標準。

爲了方便起見,就不用Blend來畫太陽和月亮了,直接使用了兩張圖片:

 

加入工程後,打開MainPage控件,添加兩個Rectangle,分別來表示天空和海面:

 

上面的兩個矩形都填充了漸變顏色,暫時表示一下。

添加月亮進來,移動到中間

 

下面是一個小的佈局技巧,爲了避免月亮隨着佈局而發生怪異的變化,把寬高定死,並且設定爲絕對中間對齊

 

然後太陽也是這麼添加到界面中,現在將海移動到前面來,爲了在後面的動畫中擋住太陽和月亮:

 

那麼現在開始製作動畫了,新建一個故事板動畫,名字爲ANI_Loop,然後爲太陽和月亮添加關鍵幀,並且移動到海面之下:

 

現在把月亮移動上來,畢竟一天之際在於午夜時分麼。

 

在2秒的地方添加一個關鍵幀,把月亮拉到海面以下:

 

下面就是把太陽升起來:

 

 

好了,現在形成一個交替循環,選擇ANI_Loop把自動回放選上,把播放測試設爲Forever

 

現在可以播放一下,看看是不是循環的出來下去呢,爲了增加一些動感,我決定加一個緩衝效果,現在選擇所有的幀,看好,可是所有幀哦。

 

選擇Back的第三個緩衝效果。

 

現在播放起來看看,是否很有趣了呢,太陽和月亮真的就是“蹦”出來的,當然了,你可以嘗試其餘的緩衝效果,看看是否能形成更有趣的感覺。

不過大家肯定不會就此滿意,因爲這天空海面實在太醜了,而且太陽和月亮出來也沒有變化,現在下面就開始完成這個問題:

 

現在把時間軸移動到開始,開始調天空和海面的顏色,大家可以依據自己的想法調整,直到自己滿意,此時可以用月亮做參照。

同樣,再將第2秒,即清晨的顏色調出來,此事不需要關閉動畫,在Silverlight裏Color是可以作爲動畫的的類型之一。

 

以及在最後一幀的白天設置出來。

 

有的時候你可能需要美術設計師的支持,才能得到最佳的表現效果,現在播放一下,看看是否不錯呢,日月交替,晝夜交替,如果你想拉長時間,只需要把關鍵幀調整即可。

我們在下面加一下小細節,讓整個的效果看起來更加真實:月亮的泛光、海面、小星星的製作

爲了不產生混亂,現在將動畫的編輯模式關閉,點擊界面上方的小紅色按鈕關閉。

 

選擇月亮,爲它添加一個投影的Effect

 

參數設置如下:

 

月亮看起來更加真實了,而海面的話,需要一張海面的波紋圖片,添加到海面的Rectangle的下面,並將海面的透明度降低:

 

關於星星的製作會用上另外一個Effect效果——模糊,畫一個小圓圈,5x5就夠了,然後添加模糊效果,將參數設置如下:

 

我在旁邊放了一個小參照,看看是不是很像呢:)

當然了這些細節將會增加更多的設計和編碼時間,例如白天星星是不會出現的、波紋只是不動肯定不會好看、甚至太陽和月亮的在海面上的投影,這些細節都決定這個場景的真實性,我相信各位能夠做的更好。

最後不要忘記在構造函數中添加一個Begin,否則這個動畫不會自動的運行。

 

本篇工程源代碼下載地址如下:點擊直接下載

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章