分享了一些素材,有兴趣的朋友可以看看:http://www.cnblogs.com/htynkn/archive/2012/01/19/game_resource.html
前些日子的文章介绍了tiledmap的主角出现和移动等等问题。相对于主角游戏自然还应该有敌人(?)。
与主角不同的是,这些元素的移动时程序控制的,一般有3种。
1.随主角的移动变化,靠近主角或远离主角
2.按照固定路线移动
3.不动
第一种的话完全是看你的游戏逻辑决定,和tiledmap关系不大。第二种的话我们可以避免硬编码(把移动路径写入程序代码中),而采用tiledmap实现,下面我们来看看具体过程。
还是新建一张地图,我选用的大小是5030,块大小:3232。
然后绘制地图:
我们假定敌人从地图中间的那条路走到左边的角上。路径如下:
现在新建一个对象层,命名为wayPoints。在几个关键的地方标注上对象,命名为wayPoint1,wayPoint2…
处理好地图后拷贝到项目中。
现在新建一个Enemy类,继承Image。
现在来整理一下思路,首先我们要得到所有的wayPoint.而第一个wayPoint就是角色的初始化点。那么Enemy类首先需要一个Vector2列表,然后继承Image需要一个TextureRegion。
所以构造函数为
初始点有了,如何移动呢?我们先来看一下坐标
我们现在在点1位置,将要移动到点2位置。只需计算x,y,z长度,然后求出对应的moveX和moveY就可以了。
distanceBetweenTwoPoints是我自己写的方法,计算两点距离。
现在我们的Enemy类就可以很正常的移动到下一个点了。
但当它接近下一个点的时候可以发现它在不停的颤抖。这是因为我们没有处理当Enemy到达下一个点时对点序列的更新。
当它和下一个点的距离很小时我们认定它到达下一个点,更新序列以保证它继续向下一个点移动。
基本没有问题了,我们看一下效果:
因为手机不好截图,所以用的java桌面项目。
Enemy用的图片是这张
用TextureRegion[][] regions = TextureRegion.split(texture, 25, 33);切分,去2行3列。
完整代码:
分割线=====================================分割线
文章中用到的地图文件和相关资源:http://www.ctdisk.com/file/4279808
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
转载自夜明的孤行灯
本文链接地址: https://www.huangyunkun.com/2012/01/19/libgdx_17/