天天看點

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

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

<a target="_blank" href="http://blog.51cto.com/attachment/201111/115149293.jpg"></a>

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

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

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

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

<a target="_blank" href="http://blog.51cto.com/attachment/201111/115209671.jpg"></a>

現在我們建立一個Silverlight控件,命名請随意,我起名為Lesson01。

<a target="_blank" href="http://blog.51cto.com/attachment/201111/115220904.jpg"></a>

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

<a target="_blank" href="http://blog.51cto.com/attachment/201111/115232624.jpg"></a>

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

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

//起初神創造天地。  

Game game = new Game() { Width = 800, Height = 600 };  

//地是空虛混沌。淵面黑暗。  

game.Camera = new Camera();  

game.Camera.Position = new Coordinate(100, 150, 100);  

game.Camera.Target = new Coordinate(0, 0, 0);  

//神說,要有光,就有了光。  

game.Children.Add(new OmniLight() { Position = new Coordinate(0,0,0) });  

//神創造萬物  

game.Children.Add(new Box() { Dimension = new Coordinate(100,100,50),InteractionEnabled = true });  

LayoutRoot.Children.Add(game);  

就是這麼簡單,對于3DGame來說,主要由場景、錄影機、燈光、物體組成,和神創世沒什麼差別,上面的坐标資料可以随便修改,通過調整這些數值來感受3D的世界是一種不錯的享受,現在運作一下看看效果吧。

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

LayoutRoot.Children.Add(new Lesson01());  

上面的一行是為了将剛才Lesson01的控件添加到首頁面當中,這隻是我的做法,你可以找到程式的入口,将App的RootVisual換掉,當然了這屬于你的個人喜好。

本文轉自nowpaper 51CTO部落格,原文連結:http://blog.51cto.com/nowpaper/712309