二维环境中的蛇/蠕虫运动

时间:2012-08-20 10:32:00

标签: algorithm math animation graphics 2d

这是我的目标: 我有多个精灵让人物。第一个精灵(在 n 精灵阵列上,其中 n 是段数)是头部,其他精灵必须遵循这一点。 因此,如果头部改变角度然后移动(朝向头部指向的方向),其他精灵必须跟随头部,就像蛇/虫一样。 我用cocos2D做这个但是没那么相关因为我认为我没有这个概念,因为我知道cocos2D,但这不是问题(不是框架)。 那么,我该怎么做呢?其他精灵如何完美地追随头部?游戏示例是App Store上的Death Worm或Super Mega蠕虫

如果需要,我可以发布我正在使用的代码(工作不好)和结果的图像,但我不知道是否需要。

感谢。

3 个答案:

答案 0 :(得分:1)

我只是将每个部分的所有位置存储在一个arraylist / vector中。在Draw上,根据游戏玩法计算下一个头部位置,然后删除列表中最旧的(pos == 0)项目,并在列表中的位置绘制精灵。

如果这看起来与Alexey的回答类似,我很抱歉,我认为这可能是一个更简单的实现。

答案 1 :(得分:0)

您需要手动设置制作人物的每个精灵的位置。必须计算新位置并在重复调用的计划方法内设置。

sprite.position = ccp(newX,newY);

您也可以参考:Cocos2D set sprite position in relation to another sprite

答案 2 :(得分:0)

为每个生物片段(包括头部)提供一系列坐标。

如果需要直线移动(不改变方向),则移动数组值,使尾部(最后)段获取相邻段的坐标,获取前一段的坐标,依此类推对于头部分段,设置新的头部坐标,它等于方向向量d:

增加的旧坐标
dx dy direction  
 0 -1 up
 0 +1 down
-1  0 left
+1  0 right

如果要更改方向,请相应地更改方向向量,然后执行相同的阵列移位和头部坐标更新。

相关问题