Cocos2d如何让一个精灵跟在另一个精灵之后?
我有一个迷宫游戏,使用cocos2d 我有一个主要精灵可以保存“朋友”精灵 一旦“朋友”精灵与主精灵发生冲突,“朋友”精灵将跟随主要精灵到处。 现在我不知道如何让“朋友”精灵跟随主静止距离和平稳运动的主精灵。 我的意思是如果主精灵向上,“朋友”将在主精灵的后面。 如果主精灵正在离开,“朋友”精灵将位于主精灵的右侧。 请帮我和我分享一些代码...Cocos2d如何让一个精灵跟在另一个精灵之后?
您可以通过使用主精灵的位置作为朋友精灵的目标来实现以下行为。这将涉及实施分离(保持最小距离),凝聚力(保持最大距离)和缓和(使运动平稳)。
确切的算法(以及更多)在wonderful behavior animation paper by Craig Reynolds中有详细说明。还有个别功能的视频和示例源代码(使用C++)。
您所需要的算法(它是多简单的人的组合)是Leader following
编辑:我已经找到了在可视的源代码here和here本文提到的算法的两个简单的实现。您需要稍微将它们从植绒(主要是跟随质心)重新组合到跟随单个领导。这个语言是Processing,类似java的伪代码,所以我希望理解应该没有问题。我之前提到的C++ sourcecode也是可下载的,但没有明确说明引导程序跟踪。
我不知道有任何cocos2d实现。
你可以分享我一些代码?是的,这正是我的意思,但我找不到算法或代码 –
@Alex已添加一些源代码链接到答案 – kostja
我有一个简单的解决方案种工作正常。按照cocos2d文档入门课程2,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);
}
}
的想法是步步为营,跟随只需要在一定的速度向领导移动。领导者的方向可以通过代码中显示的来计算。
你会使用box2d,花栗鼠或纯cocos2d?如果普通的cocos2d,你会使用动画来移动,还是移动像素? –