public class Lesson09 : Lesson04 { public Lesson09() { } }@H_419_6@ @H_419_6@关于Lesson04,可以参见: Silverlight C# 游戏开发:L4 模型组和简单的动画 @H_419_6@我们将完成下面的这张截图的效果: @H_419_6@ @H_419_6@ @H_419_6@在继承完了以后,需要对lesson04类做一些小小的改造,比如将Execution.Game给protected出来,将其中的dispatcherTimer的Tick事件执行方法virtual,这样可以帮助Lesson09少写很多的代码。
public class Lesson09 : Lesson04 { public Lesson09() { //创建天空盒 SkyBox skyBox = new SkyBox(); //天空盒6个方向的指定贴图 skyBox.Back = new ImageMap(Runtime.Instance.ContentManager.Load<Balder.Imaging.Image>("/Balder_Studio;component/SkyBox/cloudy_noon_BK.png")); skyBox.Bottom = new ImageMap(Runtime.Instance.ContentManager.Load<Balder.Imaging.Image>("/Balder_Studio;component/SkyBox/cloudy_noon_DN.png")); skyBox.Front = new ImageMap(Runtime.Instance.ContentManager.Load<Balder.Imaging.Image>("/Balder_Studio;component/SkyBox/cloudy_noon_FR.png")); skyBox.left = new ImageMap(Runtime.Instance.ContentManager.Load<Balder.Imaging.Image>("/Balder_Studio;component/SkyBox/cloudy_noon_LF.png")); skyBox.Right = new ImageMap(Runtime.Instance.ContentManager.Load<Balder.Imaging.Image>("/Balder_Studio;component/SkyBox/cloudy_noon_RT.png")); skyBox.top = new ImageMap(Runtime.Instance.ContentManager.Load<Balder.Imaging.Image>("/Balder_Studio;component/SkyBox/cloudy_noon_UP.png")); //激活天空盒,如果没有激活则不会显示出来 skyBox.IsEnabled = true; //指定 game.SkyBox = skyBox; } double _sin = 0; //重写Lesson04中的Timer动画 protected overrIDe voID _dispatchertimer_Tick(object sender, EventArgs e) { //首先执行原来的 base._dispatchertimer_Tick(sender, e); //判断是否存在摄像机 if (game.Camera == null) return; //按照Sin曲线计算x,y,z的值,使之围绕浏览Camera的TargetPoint var x = System.Math.Cos(_sin) * 250; var y = System.Math.Sin(2*_sin) * 250; var z = System.Math.Sin(_sin) * 150; game.Camera.position.X = x; game.Camera.position.Y = y; game.Camera.position.Z = z; //变化 _sin += 0.016; } }上面的代码就完成了天空盒的添加,如果你了解之前的内容,看起来很容易吧:) @H_419_6@点击直接下载工程浏览和测试,运行效果如下: 总结
以上是内存溢出为你收集整理的Silverlight C# 游戏开发:L9 天空盒全部内容,希望文章能够帮你解决Silverlight C# 游戏开发:L9 天空盒所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)