魔塔游戏中的主角被称为“精灵”,这个主角可以做很多动作,比如,可以向4个方向移动,并且分别对应4个不同的动画。动画本身就是将图片一帧一帧地连接起来,然后循环地播放每一帧形成的。在本实例中,是通过SpriteCH类实现主角功能的。类SpriteCH是一个显示图像类,该类和TiledCH的区别是:SpriteCH是由一个可以有好几帧的图组成的,所以SpriteCH通常被定义为一些小的、有动作的游戏对象,而TiledCH通常被用来构造生动的背景。类SpriteCH是在文件SpriteCH.java中实现的,此文件的具体实现流程如下。
1)定义系统所需要的初始常量和标量,具体代码如下。
2)在SpriteCH类中构造如下3个构造方法,具体代码如下
在上述三个构造方法中,参数image表示主角的图片,参数frameWidth和frameHeight分别表示主角图片的每一帧的宽度和高度,参数s表示通过一个主角来创建另一个主角。在构造SpriteCH类时,需要指定主角的高度和宽度,单位是像素值。图像的高度和宽度必须分别是主角的高度和宽度的整数倍。也就是说,需要正好让计算机把图像按照主角的大小划分成几个类。在本游戏中的这些帧,无论是横排、竖排、横竖排、方阵排都无所谓。接下来就可以指定帧数了,左上方是编号0,然后从左到右、从上到下依次排列。在项目中使用方法setFrame(int sequenceIndex)来设置哪一帧被显示,此功能是通过将编号作为参数传递来实现的。(https://www.xing528.com)
(3)因为使用类TiledCH的好处是,自动根据主角的位置来判断地图绘制的位置。所以可以使用下面的方法setRefPixelPosition()来设置主角的位置。其中参数x和y是主角的位置。
4)定义如下三个碰撞检测函数,分别表示主角和TiledCH的碰撞、主角和主角的碰撞主角和图片的碰撞。参数pixelLevel表示使用像素检测还是矩形检测。矩形检测只需要将主角对应成相应的矩形范围来进行检查,这种检测速度很快,但不是很准确,对于碰撞要求不高的游戏可以使用它。同时还可以将一个SpriteCH分解成很多矩形来使用矩形检测以提高准确性。而像素检测则比较准确,但是速度必然会减慢。具体实现代码如下。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。
