动画和碰撞检测.DOC

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
动画和碰撞检测

· 下载源代码 2.59 介绍 经典游戏非常有趣,而且他们更乐意重新创建。 几个月前,为了熟悉这个技术,我决定在Silverlight中构建一个 asteriods克隆。 在这个项目中我有如此多的乐趣,我决定构建一个 Frogger的克隆器。 本文将介绍我创建这个街机经典的步骤。 游戏是如何构建 由于我不是一个图形设计师,我需要找到一些预先制作的图片我的游戏。 我认为我至少能够找到一些老式的using游戏的屏幕截图,这是谷歌图像搜索的一部分。 幸运的是,我能找到i的屏幕截图,它给我所需的基本图像。 现在我有了一些工作,我打开了中的截图并开始裁剪图像。 这个过程花了一段时间,因为我需要裁剪出每个惟一的图像,使。 最后,我用五种不同的车辆。三个不同大小的日志。三个不同的海龟。青蛙头部。青蛙头部和最后一个。 下面是一些被裁剪出来的图片的例子: froghead还有拖拉机青蛙( 我们的主角) 。 现在我已经把图像,了,现在是开始编码的时候了。 对于我的项目,我使用了 Visual Studio 2008和 Silverlight工具 add-on 。 这个 add-on 允许你直接从 Visual Studio 创建Silverlight项目,这意味着你不需要下载任何表达式产品。 一旦安装了 add-on,就是时候启动 Visual Studio 并使用 3.5框架创建一个新项目。 然后,选择VB或者 C# 作为你的语言。 最后,选择创建一个新的Silverlight应用程序。 按照提示,当添加Silverlight应用程序对话框出现时,选择自动生成测试页面以在构建时托管Silverlight的选项。 我喜欢这个选项,因为当你从 Visual Studio 运行项目时,会出现一个 IE 实例,这样你就可以以。 现在已经创建了项目,可以导航到解决方案资源管理器并打开 Page.xaml的设计图面。 第一步是获取我创建的背景图像,并将它的设置为页面的背景图像。 这是通过向 Canvas添加一个 Image元素来完成的。 Image Source=media/background.png Stretch=None Canvas.Top=50/ 为了显示得分和与游戏相关的其他信息,我还想在页面的顶部和底部添加一些空间。 因这里,我更改了画布的宽度和高度,足以包含背景图像,并且页页眉和页眉足够。 现在基本元素在页面上,我需要考虑如何编程游戏。 只是为了一些背景信息,游戏的整个想法是让它安全地在屏幕上显示的首页。 为了回家,青蛙必须通过五道车道,避免与汽车接触。 然后,青蛙必须跳到日志上才能安全地到达家。 所以,有了这些信息,我想我需要一种方法来定义车道。 这些通道基本上会为精灵创造物理边界。 我最终使用 Rectangle的( 这些是由你在左边看到的红色轮廓所表示的) 来实现这一影响。 在创建了所有 Rectangle之后,我的屏幕看起来就像。 另外,你会注意到,顶部有一些附加矩形,它定义了一旦他穿过所有障碍物的目标。 子画面 现在,是时候讨论游戏引擎的机制了。 让我先给你一个 Sprite ( 从维基百科)的定义: 三维立体图像是一种三维/三维图像或者动画,集成在一个较大的场景里。 精灵最初被发明为一种方法,在二维视频游戏中使用特殊的硬件,快速合成多个图象。 随着计算机性能的提高,这种优化变得不必要了,这个术语演变为专门指集成到场景中的二维图像本身。 也就是说,由定制硬件或者软件生成的图形都被称为精灵。 三维图形变得更加流行,这个术语用来描述一种技术,它将平面图像无缝地集成到复杂的三维场景中。 更具体的说,在我的游戏中,日志。车辆和海龟都被视为精灵。 为了使我的程序更易于编程,我利用了一个名为 SpriteBase的通用基类。 使用公共基类可以利用代码重用,更重要的是多态性。 在尝试移动大量对象并将碰撞检测算法应用到每个对象时,这是一个重要的因素。 例如,如果要在屏幕上移动子画面,需要通过更改该对象的X 和Y 坐标来进行操作。 因此,SpriteBase类具有一个 X和 Y属性: /// summary/// The Y position of the sprite /// /summarypublic virtual double Y { get { return (double)this.GetValue(Canvas.TopProperty); } set { this.SetValue(Canvas.TopProperty, value); } } 继续,我们已经确定精灵是游戏的基本构建块。 所以第一步就是把画面放到屏幕上。 由于我们希望游戏具有挑战性,所以我们不想硬编码每个sprite的位置;因此,我们必须使用一个随机变量。

文档评论(0)

xiaozu + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档