Silverlight C# 遊戲開發:L1 3D世界的建造

我們在上一篇介紹了Balder的3D效果,今天我們用一點時間製作第一個3D例子,一起來研究和學習Silverlight的3D世界,本篇的目標效果如下:

在開發之前,我們先將Balder下載,下載方法如下:

進入http://balder.codeplex.com/,點擊右側的DownLoad按鈕,簡單的確認之後就下載下來了,當前的版本是0.8.8.9,所以你看到的ZIP包是Balder_0_8_8_9.zip,將其解壓縮。

目錄包含Silverlight3、Silverlight4、WP7,具體使用那個,要看你的需求,我所使用的環境是VS2010+Silverlight4.0。

那麼好,現在建立一個Silverlight工程,爲了更好的複用程序和展示,我們使用控件方式來一步一步的學習,那麼我們將其約定爲Lesson爲開頭,這樣只需要找到對應的篇章即可,我會在標題上用“L+數字+內容標題”做區分。

 

現在先將Balder的引擎引用到項目當中:

 

Balder.dll是主要的引擎框架和程序集,而Ninject是一個.net的輕量級開發框架,Balder使用了其中的一些方法,如果對Ninject有興趣,可以參看和了解:http://ninject.org/

現在我們創建一個Silverlight控件,命名請隨意,我起名爲Lesson01。

 

現在開始創造3D世界了,首先呢,要增加Balder的程序引用,將下屬代碼Using到控件當中:

 

Execution當中提供了主要的Game類,Lighting是燈光有關的命名空間,View是視圖,Math內包含了很多3D數學有關的類和方法,至於Geometries是3D模型的命名空間,包含了很多有用的模型。

在構造函數中添加如下代碼:

 

  1.  
  2.  
  3. //起初神創造天地。  
  4. Game game = new Game() { Width = 800Height = 600 };  
  5. //地是空虛混沌。淵面黑暗。  
  6. game.Camera = new Camera();  
  7. game.Camera.Position = new Coordinate(100, 150, 100);  
  8. game.Camera.Target = new Coordinate(0, 0, 0);  
  9. //神說,要有光,就有了光。  
  10. game.Children.Add(new OmniLight() { Position = new Coordinate(0,0,0) });  
  11. //神創造萬物  
  12. game.Children.Add(new Box() { Dimension = new Coordinate(100,100,50),InteractionEnabled = true });  
  13.  
  14. LayoutRoot.Children.Add(game);  
  15.    
  16.  

就是這麼簡單,對於3DGame來說,主要由場景、攝像機、燈光、物體組成,和神創世沒什麼區別,上面的座標數據可以隨便修改,通過調整這些數值來感受3D的世界是一種不錯的享受,現在運行一下看看效果吧。

但是在那之前,要找到MainPage添加一行代碼:

  1. LayoutRoot.Children.Add(new Lesson01());  
  2.    
  3.  
上面的一行是爲了將剛纔Lesson01的控件添加到主頁面當中,這只是我的做法,你可以找到程序的入口,將App的RootVisual換掉,當然了這屬於你的個人喜好。

下面是實際的效果演示,鼠標按住方體移動,感受一下吧:) 

源代碼下載地址:點擊這裏下載工程

工程中如果缺少Balder.dll請在這裏快速下載:SL4_Balder.rar

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