博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Silverlight C# 游戏开发:L1 3D世界的建造
阅读量:5916 次
发布时间:2019-06-19

本文共 1505 字,大约阅读时间需要 5 分钟。

我们在上一篇介绍了Balder的3D效果,今天我们用一点时间制作第一个3D例子,一起来研究和学习Silverlight的3D世界,本篇的目标效果如下:

在开发之前,我们先将Balder下载,下载方法如下:

进入,点击右侧的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有兴趣,可以参看和了解:

现在我们创建一个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请在这里快速下载:

本文转自nowpaper 51CTO博客,原文链接:http://blog.51cto.com/nowpaper/712309

转载地址:http://oewvx.baihongyu.com/

你可能感兴趣的文章
HCIE-RS 首次挂靠有效期到2020年
查看>>
智能手机浏览器中的一些手势事件
查看>>
Eclipse 工程迁移到 Android Studio
查看>>
mysql update from 关联更新 从一个表字段 到另外一个表字段
查看>>
软件工程中的RUP
查看>>
Linux远程备份工具Rsync使用案例
查看>>
Linux监控平台(zabbix监控介绍,安装zabbix,解决忘记admin密码)
查看>>
Jeecg 平台开发手册下载(20151014)
查看>>
MYSQL 去除表中重复数据
查看>>
PIGOSS BSM虚拟化监控解决方案---vCenter
查看>>
InheritedResources 简介 2
查看>>
Why Kotlin
查看>>
swift 中protocol(协议)中的可选(optional)方法
查看>>
eyoucms 列表页第一篇文章与其他文章不同样式实现方法
查看>>
大数据个人学习规划
查看>>
HBaseCon亚洲2018峰会盛大开幕 阿里带你洞悉HBase大数据生态最新发展和行业实践...
查看>>
创业为什么选小程序?微信小程序3大优势与11大功能
查看>>
Linux中find命令用法全汇总,看完就没有不会用的!
查看>>
阿里云轻应用服务器配置Ubuntu的JDK、Tmocat、Mysql和Redis
查看>>
error:while loading shared libraries: libicuuc.so
查看>>