我想实现sprite的跟随效果
像贪吃蛇一样几个sprite连在一起,但是两两之间保持一定的距离,控制第一个sprite的行动,后面的sprite会沿着前一个sprite的轨迹移动,由于不像贪吃蛇那样有一块块的网格,而是自由移动的,不知道有没有什么好的方法
目前我的考虑是sprite移动的时候按每帧保存一个位置坐标,得到一组数据,后一个sprite读取这个位置数组再进行移动,但怎么想都觉得不靠谱
大家有什么奇思妙解呢
问题已解决,详情见9楼
我想实现sprite的跟随效果
像贪吃蛇一样几个sprite连在一起,但是两两之间保持一定的距离,控制第一个sprite的行动,后面的sprite会沿着前一个sprite的轨迹移动,由于不像贪吃蛇那样有一块块的网格,而是自由移动的,不知道有没有什么好的方法
目前我的考虑是sprite移动的时候按每帧保存一个位置坐标,得到一组数据,后一个sprite读取这个位置数组再进行移动,但怎么想都觉得不靠谱
大家有什么奇思妙解呢
问题已解决,详情见9楼
没有回音啊,只有自顶了
每个幻影 就是在当前位置 在生成一个sprite
几秒后让幻影消失 就ok了
呃, 没大明白,能不能再讲得详细点 
就是你的sprite在移动
每隔几帧 就在sprite的position上生成一个和他一样的精灵
这个精灵几秒过后 消失
你就会看见 你的sprite在前面走 然后后面有幻象
同求,需要一个相似的效果
哦,我说的还不是这样的效果
我想的是后一个sprite与前一个sprite有完全相同的移动效果和轨迹,就是路程先后差了100像素左右, 举例来说就像沙罗曼蛇的小飞机一样(迷之声:其实我就是想做沙罗曼蛇的小飞机……)
其实实现方法是多种多样的。
算位置是肯定的。
lz 就是用了 flow 这个东西。
其实flow的时候 还不是去根据你flow的对象的位置来计算当前位置的。
计算位置肯定是靠谱的。
至于怎么算,算对了还是算错了。就看lz 的数学功底了。
算个位置我想初中数学知识就完全满足了吧。
纯帮顶。
DAY DAY UP!
临近周末,终于有时间解决下这个问题了,最终采取了通过update获取主动sprite的15帧位置,push到一个队列里面,从而让从动的sprite获取到比主动sprite滞后15帧的位置信息,当然从动后面可以加从从动……只需要也为它设置一个队列就好了,代码如下
//头文件部分内容
cocos2d::Sprite *hellosprite, *mainSnake, *spsnake1, *spsnake2, *spsnake3, *spsnake4;
std::queue snakeq1, snakeq2, snakeq3, snakeq4;
//cpp部分内容
void snakeScene::update(float dt)
{
if (snakeFlag) //只有在触摸事件发生时,才进行下面的代码
{
snakeq1.push(mainSnake->getPosition());
if (snakeq1.size() > 15)
{
spsnake1->setPosition(snakeq1.front());
snakeq2.push(snakeq1.front());
snakeq1.pop();
}
if (snakeq2.size() > 15)
{
spsnake2->setPosition(snakeq2.front());
snakeq3.push(snakeq2.front());
snakeq2.pop();
}
if (snakeq3.size() > 15)
{
spsnake3->setPosition(snakeq3.front());
snakeq4.push(snakeq3.front());
snakeq3.pop();
}
if (snakeq4.size() > 15)
{
spsnake4->setPosition(snakeq4.front());
snakeq4.pop();
}
}
}
```
当然这么写并没有保证sprite之间的距离恒定,而是会变成忽长忽短,不过这样也别有一番风味吧(迷之声:其实就是懒=_=|||) 不过这也仅限于触摸模式,如果像一般游戏那样使用摇杆或键盘的话,由于速度恒定,还是可以保持距离恒定的
看了这个帖子的大家,希望可以帮我解释下,testcpp里面DemoRing的原理,详情见我的另一个提问帖:
http://www.cocoachina.com/bbs/read.php?tid=213247