我有一个迷宫游戏,使用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);
}
}
的想法是步步为营,跟随只需要在一定的速度向领导移动。领导者的方向可以通过代码中显示的来计算。
- 1. 如何让精灵在XNA中跟随另一个精灵?
- 2. 如何让精灵从精灵表变成另一个精灵?
- 3. 如何让精灵跟随另一个精灵?
- 4. SFML 2.1如何让一个精灵面对另一个精灵
- 5. 如何让精灵落后于另一个精灵
- 6. cocos2d无法添加精灵到另一个精灵
- 7. 确定一个精灵何时进入另一个精灵
- 8. Cocos2D简单碰撞检测一个精灵,另一个精灵的子女
- 9. 让精灵始终指向XNA中的另一个精灵
- 10. cocos2d swift如何显示一个精灵?
- 11. 自动移动一个精灵来捕捉另一个精灵
- 12. 一个精灵
- 13. 如何让精灵跟随一艘船
- 14. Unity3D中的另一个精灵如何向上精灵?
- 15. 在cocos2d中界定一个精灵
- 16. 如何将一个精灵相对于另一个精灵的旋转?
- 17. 用触摸旋转一个精灵 - Cocos2d
- 18. 移相器 - 用另一个精灵移动精灵
- 19. 如何在cocos2D中添加多个精灵图表并让它看起来像一个精灵?
- 20. 在精灵之外的定位点上旋转cocos2d精灵
- 21. 如何让精灵旋转触摸Cocos2d
- 22. 让一个点跟随一个旋转的精灵
- 23. Cocos2D iPhone:让精灵淡入其他精灵
- 24. cocos2d如何组合精灵
- 25. 获取一个精灵跟随/追逐另一个Livewires python?
- 26. ios - 每个UIButton或一个精灵+ UILabel的个人精灵?
- 27. cocos2d动画精灵
- 28. cocos2d动画精灵?
- 29. 如何让一个精灵在一个物体内反弹?
- 30. 如何在使用SpaceManager时使静态精灵成为cocos2D中另一个精灵的子节点
你会使用box2d,花栗鼠或纯cocos2d?如果普通的cocos2d,你会使用动画来移动,还是移动像素? –