大家好哦!在这篇文章中,我将放出一个 Windows 手机游戏(或至少是一个游戏的开始......),并希望它给大家慢慢带来更多的乐趣。同时给大家介绍所需要的基本技术。然后,我将介绍其中的一些步骤,我希望这能一直引起你的兴趣,直到文章的结尾。
同时我也不得不感谢一直支持我的卤面网版主,是他让我提起兴趣写了这么一篇文章,再次感谢卤面网,一个非常不错的wp7开发论坛,后面我也将再次向大家发布几篇高质量文章,请大家到卤面上找我吧,呵呵
好了,正题开始..
“海盗! 是一个wp7上的用C#和XNA做出来的游戏,使用Farseer物理引擎。游戏的想法,主要是启发于Rovio的“愤怒的小鸟”的游戏,在2011年年底达到500万次的下载。愤怒的小鸟可能已经上瘾了世界各地的许多人,但是从我个人而言,我不沉迷于游戏本身,而是追求创作一个这样的游戏所需要的过程。
而不是鸟,而是大炮炮弹。而不是猪,而是大海盗船的海盗。在这里你的任务是使用大炮瞄准,并销毁所有海盗。
Farseer物理引擎
这是一个很酷的开源物理引擎,一个开放源码项目(顺便说一句,愤怒的小鸟也是使用Box2D的)。所不同的是用的 C + +的Box2D(并已被移植到多国语言),而本游戏用的C#,Silverlight和XNA。
调整游戏每秒60帧
1.为了达到最大帧每秒(约60帧),你必须修改你下载的farseer的源代码:
2.双击“Samples XNA WP7 ”解决方案。选择“Upgrade Windows Phone Projects...
“ 他们全部升级到最新的Windows Phone 7.5芒果。
在游戏类的构造函数中,添加此事件处理程序:
3.然后添加此事件:
4.在游戏类的初始化方法中,确保修改PresentationInterval参数为PresentationInterval.One:
幸运的是,我已经修改出了Farseer物理引擎兼容的编译版本,它能在 Windows Phone 7.5上运行尽可能最好的帧率。这将给对farseer引擎与游戏开发有兴趣的读者带来非常有用的帮助,
转换成物理对象的图像
对游戏中的所有动态创建对象进行贴图。这是 Farseer一个非常不错的功能,使我们的开发更容易。我们留下的空白与透明色,如图,
Farseer使用BayazitDecomposer.ConvexPartition的方法,创建一个大凹多边形的小凸多边形:
|
处理输入循环
Farseer 引擎处理输入循环的接口,使我们有机会来检测和处理用户的手势。
此方法是负责:
检测左边摇杆运动,并转化成大炮运动。
检测的右边“A”的按钮,射击大炮。
|
Update循环
在XNA框架中,更新循环被调用时,需要处理游戏逻辑。这可能包括游戏状态管理,处理用户输入,或数据的更新。通过重写此方法,我们可以添加逻辑,具体到我们的海盗游戏我下面也会慢慢讲。
在XNA中, Update方法是和draw方法组合起来用的,你必须考虑到每个对象都有自己的特定角色。也就是说,一定不要把draw写入到了update中,也不要在draw中去更新update。
update 类主要有以下用途:
计算新的云的位置。有3层云 ,每一层以自己的速度移动。
海的外观是由4个现有的图片纹理轮流显示。
根据游戏状态转换移动camera (也就是说,游戏一开始是显示你的海盗船,然后camera移动到你的船)。
要沿炮弹描述的路径更新camera位置。这是有用的,以保持游戏动作的轨道。
必要时控制camera变焦。
也许最重要的是:更新大炮球的位置(随着烟雾留痕迹飞)
|
在update函数中一个很重要是使用 GameTime参数。此参数告诉我们时间,因为游戏是最后一次更新花了多少时。正如你可以在上面看到,它使我们能够正确地计算cpu的速度波动的干扰。否则,你可能会看到比赛快或慢,取决于你手机在某一时刻的cpu的处理速度。
draw循环
是XNA框架绘制的重要模块。我们重写此方法来绘制我们的海盗游戏所需的所有帧。
这个循环处理了下面所说的一部分内容:
绘制背景纹理
绘制的蓝天,白云,大海和船
绘制了炮弹,大炮和烟雾的痕迹
绘制了现场的海盗和其他对象。
得分和最高分数。
|
首先,我们绘制的天空。然后我们绘制以水平不同的速度运动的云 ,然后我们画的大海,然后船。最后,我们得出的动态元素:炮弹,大炮,比分。
最后的思考
我希望你喜欢!如果你有话要说,请到卤面网(codewp7.com)问答区联系我,我会很高兴知道你在想什么。同时wp7交流QQ群172765887中,也能找到我的身影,感谢大家
全部源码下载请猛击
原文请见
http://www.codeproject.com/Articles/322715/WPPirates