快捷搜索:

【WP7进阶】——XNA游戏平面矩形碰撞检测

碰撞检测在险些任何游戏都是很关键的一个部分,而碰撞检测又抉择了游戏的流通性,它对流通性的影响若何之大年夜的缘故原由,在于碰撞检测算法越是正确到位,游戏将会运行得越迟钝。在碰撞检测方面,很显着必要在准确性和机能之间进行权衡。

实现碰撞检测最简单和快速的要领是经由过程困绕盒算法。当用一个困绕盒算法时,就必要在屏幕上的每个物体(纹理图像)周围“画“一个盒子(矩形块),然后反省这些盒子是否订交,假如孕育发生订交(怎么听起来这么耳熟?),就即可判断出是孕育发生碰撞了。经典的碰撞游戏可以看看如今某I设备优势靡举世的小鸟

经由过程物理算法和碰撞检测等实现这只小鸟欺压小猪的传说,这点是很值得借鉴滴。

本篇进修文章将会有两个纹理图,一个图片做为碰撞块例如上图的小鸟,另一个图片做为必要在某一地方去检测是否与之孕育发生碰撞的纹理,例如上图的小猪或者城墙。这两张图片分手是这样的:

我是用来检测是否有人撞到我的。。。。。

我没事爱好撞人。。。。。。

好了。素材己经有了,下面就到了若作甚这两个纹理图像添加各类出场的告白动作了。首先,照样国际常规一把,先给出效果图:

看上图效果,天上掉落下了很多多少尖尖的小块呀,快逃命呀,不过小人跑不敷快,被一个尖尖的小块砸到了,立时满脸是血,屏幕都被染红了。悲催咯。。。。

要实现这个功能首先我们必要获得小人的碰撞点,和每一个三角形的碰撞点。以得到小人碰撞点为例,必要获得小人所在的x 坐标和y坐标,并且获得小人的宽度和高度。当我们获取到这个数据的时刻,就可以为小人添加一个困绕圈也叫矩形检测块:

// 得到小人的磁撞大年夜小和碰撞的地点

//公式为:获得小人所在的x、y 地点,然后在那个x、y点的区域高宽

Rectangle personRectangle =

new Rectangle((int)personPosition.X, (int)personPosition.Y,

personTexture.Width, personTexture.Height);

您可能还会对下面的文章感兴趣: