贪吃蛇蛇身移动的算法

每当贪吃蛇碰到一个食物之后就生成一个蛇身,将蛇身添加到蛇身列表中,首先记录下蛇头移动前的位置: Vector3 headPos = transform.localPosition

一:第一种思路

这种方式只限于蛇身是唯一的
思路:只移动最后一个蛇身,将其移动到第一个位置
贪吃蛇蛇身移动的算法_第1张图片

将蛇身列表中的最后一个值赋给蛇头移动前的位置

if (bodyList.Count > 0)
{
    bodyList.Last().localPosition = headPos;
    bodyList.Insert(0, bodyList.Last());
    bodyList.RemoveAt(bodyList.Count - 1);
}

二:第二种思路

这种方式没有限制,蛇身多种多样也可以
思路:从最后一个蛇身开始依次往前移动(注意不能从第一个蛇身开始移动,当第一个蛇身移动后,第一个的蛇身的位置就置空了)
贪吃蛇蛇身移动的算法_第2张图片

从最后一个蛇身开始依次设置给前一个蛇身的位置,第一个蛇身的位置为蛇头移动前的位置

if (bodyList.Count > 0)
{
    for (int i = bodyList.Count - 2; i >= 0; i--)
    {
        bodyList[i + 1].localPosition = bodyList[i].localPosition;
    }
    bodyList[0].localPosition = headPos;
}

 

 

你可能感兴趣的:(Unity开发实战)