Cocos2D实现RPG游戏人物地图行走的跟随效果

大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处.

如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;)



在一些RPG游戏中,人物队列在地图中行走的时候有时需要实现一个跟随效果,比如大家都玩过的FC游戏<<吞食天地>>.

效果为当队列只有一个人时,Ta可以自由在地图中行走,当队列多于一人时,我们让其他角色跟随在游戏主角之后行走,达到一种”萌萌的”拖尾效果.

如上图,可以看到游戏队列中有4位角色,但我们设定只显示后2位,当然后面跟着100位也是没问题的,前提是你想把RPG变成贪吃蛇的节奏 ;)

打开GameCharacter.h代码,在接口中增加2个属性:

@property (nonatomic,strong) GameCharacter *followedGC;
@property (nonatomic,assign) CGPoint lastTilePos;

接下来打开GameCharacter.m文件,将popStepAndAnimate方法修改如下:

//按最短路径中每一步用动画的方式移动,使角色沿最短路径最终到达目的地
-(void)popStepAndAnimate{
    //原角色行走代码...
    _lastTilePos = [_mh tilePosForPosition:self.position];
    //原角色动画代码...
    if (_followedGC) {
        _followedGC.lastTilePos = _lastTilePos;
        [_followedGC moveTowardByAStar:[_mh positionForTilePos:_lastTilePos]];
    }
}

代码功能为设置角色当前位置为上一个位置,然后如果有跟随的角色,则调用其自身的移动方法,目的地为上一个位置.因为上一个位置总和队列头部的角色位置相同,所以第一次调用后面的角色是不会移动的,这也是我们想要的效果(否则,所有角色都会重叠在一起且同时移动)

最后我们添加一个跟随方法:

-(void)follow:(GameCharacter*)gc;

其实现如下:

-(void)follow:(GameCharacter *)gc{
    gc.followedGC = self;
    self.position = gc.position;
}

可以看到代码很简单,仅仅是将自身加入被跟随角色,然后设置自身位置和被跟随角色位置一致.

好了,短短几行代码,我们的跟随效果就完成了,蛮有意思的,不是吗? ;)

时间: 2024-10-12 13:40:30

Cocos2D实现RPG游戏人物地图行走的跟随效果的相关文章

Cocos2d-x 地图行走的实现:图论与Dijkstra

本文乃Siliphen原创,转载请注明出处:http://blog.csdn.net/stevenkylelee 本文的实现基于Cocos2d-x 3.2. 本文,我们最终实现的地图行走效果如下2图: 下面是2张屏幕录制的gif动画图,有点大,看不到的话,耐心等待一下,或者刷新页面试试. 地图行走用于现实的地图上. 1.什么是地图行走 很多游戏会有一个"世界"的概念.玩家在这个世界中行走,到达不同的地方去执行的任务,打怪或者是触发剧情等.下图是<锁链战记>的世界地图的截图.

Cocos2d-x 地图行走的实现2:SPFA算法

上一节<Cocos2d-x 地图行走的实现1:图论与Dijkstra算法> http://blog.csdn.net/stevenkylelee/article/details/38408253 本节实践另一种求最短路径算法:SPFA 1.寻路算法实现上的优化 上一节我们实现的Dijkstra用了一个哈希表来保存搜索到的路径树.如果能用直接的访问的方式,就不要用哈希表,因为直接访问的方式会比哈希表更快.我们修改一下图顶点的数据结构.如下: /* 图顶点 */ class Vertex { fr

Cocos2d-x 地图行走的实现3:A*算法

上一节<Cocos2d-x 地图行走的实现2:SPFA算法>: http://blog.csdn.net/stevenkylelee/article/details/38440663 1.修改一下Dijkstra的实现 回顾一下之前Dijkstra的实现.Dijkstra需要从一个表Q中选出一个路径代价最小的顶点.之前我们的实现是,一开始就把所有的顶点都放入这个表Q中.仔细想下就会发现,那些被初始化为路径代价最大值0x0FFFFFFF的顶点是不可能会被选中的,对于这些顶点不需要遍历.从表中取出

_鼠标移动跟随效果

<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>_鼠标移动跟随效果</title> <style> div { width: 50px; height: 50px; border-radius: 50%; position: absolute; text-align: center; font-size: 30px; color: #

鼠标跟随效果(杀马特风格)(非主流勿黑我)

1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="utf-8"> 5 <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> 6 <title>萤火虫阵列</title> 7 <meta name="description&

[HTML/CSS]导航栏的下划线跟随效果

1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 6 <meta http-equiv="X-UA-Compatib

Cocos2D实现RPG队伍菜单随意调整角色顺序的效果

大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 假设认为写的不好请多提意见,假设认为不错请多多支持点赞.谢谢! hopy ;) 前一篇我们实现了队伍实现拖尾效果,可是在实际游戏中我们往往须要依据不同的角色能力,角色职业对角色队伍进行排序,并且希望排序后的效果能马上在游戏地图场景中反应出来,所以在本篇博文中我们就来看看怎样实现调整角色顺序并且马上在地图中显示的功能. 能够看到我们在将角色Panda从队列头部移至第3位后,地图上角色队列也马上发生了改变. 首先打开SpriteBuilder

Arcgis for javascript实现百度地图ABCD marker的效果

概述: 在我的博客中,有一篇相关的文章,这段时间,有很多人问我求源码,只是时间过去已长,源代码已找不到,乘着这个9.3放假,又重新实现了下,并相关代码做了优化,在此贴出来,方便大家使用. 相关文章地址: http://blog.csdn.net/gisshixisheng/article/details/39577817 实现后效果: 为直观期间,先贴出来我做的效果 列表展示和地图展示以及联动 显示信息 实现思路: 1.列表与地图的互动 鼠标经过列表时,修改列表图标,并根据列表返回的值在地图上绘

css光标下划线跟随效果

直接上代码: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <style type="text/css"> ul { display: flex; position: absolute; width: 1000px; top: 50%; left: 50%; -webkit-transform