求教如何实现队列跟随效果,主角在前面走,后面小弟跟着走

坐标队列的方式我试过了,但是加速的话,角色之间的间隔会随之变大,效果不是想要的,网上找了很多贪吃蛇的demo都是简单版的,实现加速效果之后也是和我一样的情况.

不知道是不是我的实现方式不对,我现在的实现方式是每个角色去取前一个角色走过的点,两点之间的间隔是用速度*帧数算的,所以速度变快了间隔边长了.

let curPos = this.node.position.clone();
let x = cc.misc.lerp(curPos.x, endPos.x, 0.1);
let y = cc.misc.lerp(curPos.y, endPos.y, 0.1);
用插值计算位置,然后在赋值试试

哥哥们早上上班都不逛论坛不摸鱼吗,年前所有需求前天就写完了,就剩这一个需求了,来个好哥哥救救我.我之前也还试过用(下一个坐标点计算当前坐标点的向量)然后再计算当前点到下一个点 - 间隔要移动多远,这样好像也不行…

这个不行,我这款游戏是上下左右直角转向的,lerp会有曲线运动,这个也试过啦.

那就把查找运动轨迹写成一个函数,然后固定主角和小弟之间的距离,要到达的位置从函数里面找

这个有想过诶,如果出现一种情况,主角已经转向至X轴了,但是小弟还在Y轴咋办.

根据你的描述,小弟跟着主角走,那么主角刚转向X轴小弟也应该在Y轴才对,所以你的需求到底是什么

所以是把主角运动轨迹上关键的转向点记录下来,然后写个函数通过这几个点获得剩下小弟的位置,如果你这个时候主角转向x轴了,那么在找小弟位置的时候因为间隔比转向后运动的距离要长,所以位置也会还在多出来的y轴上

具体要求怎么跟呢,是完全走主角走过的点,还是靠近就行

计算方式应该是取主角屁股后间隔的点对吧,但是如果主角在原点的时候面向X轴,这个时候的点不就变成了-间隔X,然后小弟会从-间隔X开始走横向移动吗,而不是在原点转向

要完全走主角走过的点.

那你的主角可以维护一个数组,这个数组每帧放入一个新的主角状态(位置和角度),数组超过一定长度后就加一个删一个,然后子节点去读这个数组的固定间隔,比如第一个小弟始终读数组下标30 的值,第二个小弟始终读下标 30 * 2 的值,以此类推,这样你每帧数组元素往后一下,所有小弟都始终保持延迟了 30 帧,需要考虑的是初始数组不是每帧有值,所以你把初始数组搞定就行了,数组长度=小弟个数 * 延迟帧数

好嘞我试试看

其实很简单,你只要控制好主角就行,后面的小弟根据主角的坐标进行计算。
主角管理一个小弟的对象组,主角位置坐标变动,直接通知这个对象组,让这个对象自己去算。
或者可以有一个队列管理对象,这个管理类包含主角和小弟对象组,你只要管理好这个队列对象移动坐标就行。坐标实时变化通知管理的主角和小弟对象组,具体计算各自去算。

没有想象的那么复杂,仅供参考,希望对你有帮助。