我有一个使用cocos2d的迷宫游戏,有一个主要的精灵可以拯救"朋友"精灵。 一旦"朋友"精灵与主要精灵碰撞,"朋友"精灵就会跟随主要精灵的脚步。 现在我不知道如何使"朋友"精灵以静态距离和平滑的移动方式跟随主要精灵。 我的意思是,如果主要精灵向上移动,"朋友"精灵将在主要精灵后面。 如果主要精灵向左移动,"朋友"精灵将在主要精灵的右边。 请帮助我并分享一些代码...
我有一个使用cocos2d的迷宫游戏,有一个主要的精灵可以拯救"朋友"精灵。 一旦"朋友"精灵与主要精灵碰撞,"朋友"精灵就会跟随主要精灵的脚步。 现在我不知道如何使"朋友"精灵以静态距离和平滑的移动方式跟随主要精灵。 我的意思是,如果主要精灵向上移动,"朋友"精灵将在主要精灵后面。 如果主要精灵向左移动,"朋友"精灵将在主要精灵的右边。 请帮助我并分享一些代码...
编辑:我已经找到了两个实现论文中提到的算法的简单实现,代码可以查看这里和这里。你需要稍微重新组合它们从群集(主要是跟随重心)转变为跟随单个领导者。该语言是Processing,类似于Java伪代码,所以我希望理解不应该有问题。我之前提到的C++源码也可以下载,但并没有明确的领导者跟随功能。
我不知道是否有任何cocos2d的实现。
我有一个简单的解决方案,基本上运行良好。按照cocos2d文档中的入门课程第二课Your first game进行操作。在实现触摸事件后,使用以下代码将seeker1设置为跟随cocosGuy:
- (void) nextFrame:(ccTime)dt {
float dx = cocosGuy.position.x - seeker1.position.x;
float dy = cocosGuy.position.y - seeker1.position.y;
float d = sqrt(dx*dx + dy*dy);
float v = 100;
if (d > 1) {
seeker1.position = ccp( seeker1.position.x + dx/d * v *dt,
seeker1.position.y + dy/d * v *dt);
} else {
seeker1.position = ccp(cocosGuy.position.x, cocosGuy.position.y);
}
}
这个想法是在每一步中,跟随者只需要以一定的速度向领导者移动。朝向领导者的方向可以通过代码中显示的计算得出。