XNA游戏开发——播放音效(2)
摘要:上一篇文章已讲述了,如何简单的添加及播放音效,本篇文章将讲述音效实例。音效实例调用在SoundEffect对象的Play方法,提供简单的方法来播放声音,在很多情况下将会很充足。对于枪声,爆炸声,玩家成功的声音和其它各种各样的效果,这很可能都是你所需要的。然而,在其它地方,你可能发现需要很高的控制才能超过你播放的声音。循环播放声音的能力,举例,是非常有用的,但仅由SoundEffect类提供的功能不能提供这种能力。主要的原因是我们将没有办法去阻止声音;我们不能获得一个声音ID或任何类似的值,所以一旦激活一些声音后,我们将不能告诉类哪一个应该停止播放。在SoundEffectInstance类中可
阅读全文
posted @
2012-07-12 10:02
AppleSeeker(冯峰)
阅读(1885)
推荐(3)
XNA游戏开发——播放音效(1)
摘要:XNA提供一个相当灵活的方式在你的游戏中来播放音效。它可以同时播放多个声音(包括相同音效实例)以及提供控制音量等级,立体声像和音调转换。它可以循环播放或播放它们一次,同时也提供控制来允许声音暂停或恢复播放。向项目中添加音效音效作为工程内容的一部分来创建,已与所有在前一个章节中我们使用的其它资源数据一样(纹理和精灵文字)。它们使用相同方法添加进来:通过右键在解决方案浏览器中的主工程内容节点,然后选择“Add / Existing Item”。声音文件可以找到并添加到工程中。在添加一个声音文件后,你将能看到,内容项目的Content Importer属性设置为WAV Audio File,Cont
阅读全文
posted @
2012-07-10 14:23
AppleSeeker(冯峰)
阅读(1748)
推荐(2)
公告板
摘要:公告板是简单的四边形(平滑,平面或矩形的纹理对象),在游戏世界中渲染,所以它们直接面对相机。当相机围绕世界移动时,公告板对象旋转以便它们持续直接面对相机。不同于粒子系统,公告板有大量潜在的用途,包括渲染围绕光照的明亮光点的镜头光晕和使用2D图片渲染的基础树,如此,它们总是面对相机出现。对于很多类型的渲染对象,适用于公告板的这种方式将给予深度外观,即使对象实际上是完全平滑的。举例,想象下你想在你的游戏中去渲染没有纹理,未点亮的特殊对象。这样一个球体看上去正好和所有角度相同,所以如果你可以简化渲染一个平滑的球体绘制并保持它直接面对相机的角度,它将无法区分实际的球体,但需要相当少的计算能力来显示它。
阅读全文
posted @
2012-07-09 13:57
AppleSeeker(冯峰)
阅读(1492)
推荐(0)
粒子系统介绍
摘要:另一个有用的技术,许多游戏将从粒子系统使用中受益,它是小的,平滑的,在场景中使用透明来绘制来创建可以在你的游戏世界中添加大量气氛的各种效果的的纹理三角形。粒子系统添加到游戏中,就像任何其它对象那样,但有下列特征:1)它们经常使用一个称为公告板的技术来确定它们的方向以便它们直接面对相机。2)它们通常关闭写入深度缓冲以便它们不会封闭另一个。3)它们往往最后去渲染到每一次场景更新中。因为它们不会更新深度缓冲,渲染顺序防止在它们之后的对象出现在它们前面。4)它们差不多总是添加到一个组中而不是单独的。
阅读全文
posted @
2012-07-06 13:50
AppleSeeker(冯峰)
阅读(496)
推荐(0)
在游戏框架中实现天空体
摘要:为了尽量让使用天空体容易,我们将在游戏框架中整合一个特殊的天空体对象,允许我们来确保它是在场景中的任何内容的之前渲染。天空体创建一个新的游戏框架类:MatrixSkyboxObject。该类继承于MatrixObjectBase,它所对应的继承关系如图所示。在类中,为了天空体能包含立方体的4个面(包括顶部和底部面),代码创建一个顶点缓冲,所有面都朝向内部。它们使用纹理坐标来配置,在盒子内部围绕所提供的纹理。在天空体类的Update方法中,相机坐标通过读取它的Transformation.Translation属性来取得,并设置为天空体得自己的坐标。这样做确保天空体总是在相机中出现相同距离,无论
阅读全文
posted @
2012-07-05 13:45
AppleSeeker(冯峰)
阅读(749)
推荐(0)
创建天空体
摘要:天空体实际上作为一个立方管实现;它没有顶部或底部面。这大大简化为天空体创建图形的任务。用这种方式使用管子的效果已经隐藏在天空体的顶部,通过确保天空纹理的顶部边缘和场景的背景色有相同的颜色,使得在天空体终点处和背景的开始处很难看到它,除非它是直接看到的。在底部边缘,我们确保足够的面来绘制来隐藏纹理较低边缘。相反,它简单的消失在场景内容背后。如果你正在创建游戏,需要能够环顾立方体,包括向上和向下,你需要增强它来创建完全的立方体代替目前使用的管的形状。这是简单的问题,在天空体的顶部和底部添加2个额外的面,都指向里面。产生天空体图片可以是一个挑战的事,取决于哪类环境你所需要的。一个选择是去自己创建背景
阅读全文
posted @
2012-07-03 13:40
AppleSeeker(冯峰)
阅读(488)
推荐(0)
天空体介绍
摘要:我们的3D世界通常开始时看上去的感觉是非常复杂的,但它们目前都有一个很明显的缺点:它们都被一个空白的背景所提供。我们为我们的精灵工程创建一个背景图片,通过在渲染精灵前,先简单用绘制一个屏幕大小的图片。这个工作在2D中是很好完成的,但在3D中它就会崩溃:随着相机移动,背景也必须跟着移动,我们不能让这个发生在一个静态的图片中。这有多种方法,我们可以采取工作的3D背景来实现,这里你所看到的称为天空体。之所以这么称呼,因为它实现效果是一个盒子(一个立方体),放置在相机中。相机在集中在盒子里,并且它的角度变化为看到的围绕的场景,它也环顾四周的天空体。结果是现实的外观背景移动与在场景中的相机和对象一致的。
阅读全文
posted @
2012-06-25 13:37
AppleSeeker(冯峰)
阅读(708)
推荐(0)
添加雾化效果
摘要:XNA提供了一个有用的功能是能够在渲染场景中添加雾化效果,它提供简单的模仿真实世界中的雾,让对象逐渐远离相机知道看不到它们。显然,Windows Phone 7设备可以渲染到屏幕上,有大量内容是被限制的,如果你已打开环境延伸到远方,在某个阶段你必须绘制一条线,并告诉XNA不会去绘制任何较远的东西。这个距离限制对于剪辑平面通常通过设置一个适当的值来达到,当设置投影矩阵,如我们在第7章节所讨论的那样。缺点是,当对象到达剪辑平面,它们明显消失了。它们通常留下它们的一部分任然可见,当他们的边缘穿过剪辑平面,会导致一个非常不自然的场景。在它们消失之前,你可以使用雾化效果通过允许它们逐步消失来帮助减少消失
阅读全文
posted @
2012-06-17 13:33
AppleSeeker(冯峰)
阅读(1021)
推荐(0)
使用追踪相机
摘要:现在你已准备好去飞行,那让我们做一些过去小的游戏的变化,然后看看它的外观。ResetGame方法创建纸飞机对象并存储它到一个称为_plane类级变量中,为了以后能方便的访问。创建相机后,在初始化后,是没有追踪对象的。因此,相机位置服从手动提供的转换而不是跟随飞机。当工程运行后,初始化配置就出现了。房屋和飞机是可见的,但相机缓慢围绕场景。在游戏的CameraObject.Update函数中使用简单的旋转和转化矩阵来处理相机移动路径。当玩家轻拍下屏幕,然而,我们激活了追踪摄像机。游戏类的Update方法中检查屏幕的轻拍,每一次发现,它都将增加下一次的4个相机配置。以下代码将描述如何激活追踪相机。/
阅读全文
posted @
2012-06-09 11:48
AppleSeeker(冯峰)
阅读(691)
推荐(0)
实现追踪摄像机
摘要:为了允许游戏可以简单的使用追踪摄像机,我们将添加一个新的属性给MatrixCameraObject类,它可以放置目标对象的一个引用。如果这个属性,命名为ChaseObject,默认值为null,相机将完全像以前那样,仅按照它的位置和LookAtTarget坐标放置它本身。如果提供了游戏对象,然而,相机的行为将改变以便它围绕场景来跟随对象。当操作视角设置模式时,相机有2个责任它必须实现每一个它的Update方法:它必须放置它本身在目标对象后面,并且它必须直接看到目标对象。让我们看下它是如何实现的。首先,Update代码检查看下是否提供ChaseObject。如果不是,它申请默认的对象转换,不做任
阅读全文
posted @
2012-06-01 11:44
AppleSeeker(冯峰)
阅读(780)
推荐(0)
创建一个追踪摄像机(2)
摘要:为了生成曲线,函数需要通过4个在沿着重量值在0和1之间的路径上连贯的位置。由于重量在这些2个值之间增加,曲线返回在更远的路径上的坐标。当所提供的重量值为0,曲线将返回正确的坐标在第二个输入坐标。当所提供的重量值为1,曲线将返回一个准确的坐标在第三个输入位置。然而,所有4个值在这些计算中来使用, 来确保在第二个和第三个位置之间的平滑路径,并同样向前进到下一组运行点。这个可以使用图表来举例说明,在图所示。如果使用点0,1,2和3来计算曲线,重量在0.0,由此产生的位置会是1。如果重量增加到1.0,曲线坐标轨迹将沿着在点1和点2之间的线,当重量到达1.0,将到达点2。注意,从这个点的,曲线坐标没有返
阅读全文
posted @
2012-05-24 11:37
AppleSeeker(冯峰)
阅读(358)
推荐(0)
XNA开发—增添一些亮点
摘要:毫无疑问,实现这个旋转的正方形只涉及了XNA中的基础内容。现在对项目进行简单的修改从而使显示出来的图形更加生动且更富吸引力。按代码所示来修改Draw函数的代码,将会看到绘制到屏幕上的图形发生了重大的变化protected override void Draw(GameTime gameTime){ GraphicsDevice.Clear(Color.CornflowerBlue); // Reset the world matrix _effect.World = Matrix.Identity; // Loop for each square for (int i = 0; i <
阅读全文
posted @
2011-07-01 21:14
AppleSeeker(冯峰)
阅读(573)
推荐(0)
XNA开发—移动对象
摘要:为了使静止的正方形更加有趣,我们来快速浏览一下让其绕着屏幕旋转的方法。要实现这一点,首先需要跟踪旋转的角度。添加一个类级别的float变量,将其命名为_angle,并在每次更新时增加5度protected override void Update(GameTime gameTime){ // Allows the game to exit if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed) this.Exit(); _angle += MathHelper.ToRadians(5); base.U
阅读全文
posted @
2011-06-17 21:09
AppleSeeker(冯峰)
阅读(587)
推荐(0)
XNA开发—渲染对象
摘要:所有初始化工作现在已经就绪,我们可以在屏幕中绘制正方形了。由于只使用了顶点颜色而没有应用纹理,所以在LoadContent函数中无需加载任何内容,在这里将其留空。由于目前无需更新任何内容,所以我们直接来讨论Draw函数。像在使用精灵时一样将屏幕清空(同样使用CornflowerBlue色),不过这次所采用的绘图方法则完全不同。需要使用之前创建的BasicEffect而非SpriteBatch对象来管理图形的绘制。每种效果都可以包含一种或多种技术(technique)。它们是包含在效果之中具体的渲染操作方法——效果可以看做是这些技术的容器。Windows Phone 7版本的XNA中每种效果都包
阅读全文
posted @
2011-06-13 21:05
AppleSeeker(冯峰)
阅读(618)
推荐(0)
Windows Phone 7 XNA开发—使用顶点渲染
摘要:和以往一样,我们先来创建一个新的XNA项目。为简单起见,这里不使用游戏框架,因此无需添加对它的引用或更改游戏类的继承结构;它仍然派生自Microsoft.Xna.Framework.Game类。我们需要向游戏类中添加一些类级别的变量以便管理将要渲染的场景。private BasicEffect _effect; private VertexPositionColor[] _vertices = new VertexPositionColor[4];接下来,需要设置这些变量以便用于XNA中。此处所需的代码会被添加到Initialize函数中。这里首先要做的是设置投影矩阵。我们将在下一章详细地讨论
阅读全文
posted @
2011-06-07 12:26
AppleSeeker(冯峰)
阅读(400)
推荐(0)
Windows Phone 7 XNA开发—基于矩阵定位
摘要:三维渲染带来了很多新的挑战:3D图形是以模型而非简单的位图来进行渲染的,我们需要切换到一个不同的角度来观察接近或远离屏幕的运动,同时需要以一种完全不同的方式来告诉XNA我们想在画面的何处进行绘制。当准备进行3D图形渲染时,我们会使用一种基于矩阵的系统。矩阵可以将一系列的移动和变换编码为一个紧凑的结构,然后应用到我们想要绘制的图形中。执行此操作所需的大部分计算都以XNA函数的形式进行了封装,因此我们无需过多的关注其内部运行方式。与任何其他事物相同,可能需要一点时间来习惯以矩阵变换进行思维,不过一旦你习惯了就会发现它们是非常有用的工具。事实上,最终你可能会发觉比起XNA的精灵渲染方式,你更喜欢矩阵
阅读全文
posted @
2011-05-12 12:14
AppleSeeker(冯峰)
阅读(451)
推荐(0)
[分享]Professional Windows Phone 7 Game Development: Creating Games using XNA Game Studio 4
摘要:推荐语录:相较于目前市面上的另2本关于XNA开发的书来说,本书非常详细的描述了3个游戏的完全开发过程。个人感觉,比Microsoft.Press.Microsoft.XNA.Framework.Edition.Programming.Windows.Phone.7这本书更值得一读。Book DescriptionCreate the next generation of gaming titles for Windows Phone 7! Providing an overview of developing games for Windows Phone 7 while working wi
阅读全文
posted @
2011-03-26 15:20
AppleSeeker(冯峰)
阅读(651)
推荐(0)
[分享]Windows Phone 7 Made Simple
摘要:推荐语录:本书针对那些以前使用过Windows Mobile或未使用过的普通用户观看。书中详细描述了Windows Phone 7的每一个功能的使用,让你能够更深入的了解Windows Phone 7。Book DescriptionWith Windows Phone 7, Microsoft has created a completely new smartphone operating system that focuses on allowing users to be productive with their smartphone in new ways, while offer
阅读全文
posted @
2011-03-26 15:04
AppleSeeker(冯峰)
阅读(434)
推荐(0)
[分享]Windows Phone 7 For Dummies
摘要:推荐语录:本书主要讲述如何使用Windows Phone 7,面向人群主要是普通用户。Description:Unleash the full power of your Windows Phone 7!Windows Phone 7 is the new and improved mobile platform for all Windows smartphones. The new platform has been completely rebuilt from the ground up and this guide walks you through everything that&
阅读全文
posted @
2011-03-15 15:01
AppleSeeker(冯峰)
阅读(489)
推荐(0)