【Unity】贪吃蛇游戏开发流程

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_39574690/article/details/89068305

贪吃蛇核心功能是蛇的移动以及蛇的增长。

蛇的移动原理:将蛇分为2部分:蛇头和蛇身(分很多个小块),用一个脚本放于蛇头控制蛇的整体移动,脚本中使用一个列表保存蛇身物体,先移动蛇头后移动蛇身,蛇头移动很简单就只是将localPosition朝着玩家控制的方向移动一个单位即可,不过移动之前要保存原来蛇头的位置,因为第一段蛇身需要移动到这个位置。当蛇头移动后,就要遍历蛇身列表,从后往前遍历,遍历到1即可,不用到0索引,然后在遍历i时写上: sheshen[i].transform.localPosition = sheshen[i-1].transform.localPosition;后面的蛇身位置改为前面的,直到第二个蛇身位置改为第一个蛇身位置结束,遍历结束后还差第一个蛇身的位置没有移动,那就是将第一个蛇身移动到之前保存的旧蛇头位置,结束整个蛇的移动过程。代码如下:

    void Move()
    {
        //原来头位置
        headPos = gameObject.transform.localPosition;
        //头位置移动之后位置
        gameObject.transform.localPosition = new Vector3(headPos.x+x,headPos.y+y,headPos.z);
        if (bodyList.Count > 0)
        {
            //将尾巴移到新头后面 即旧头位置 第一种方法移动蛇身
          //  bodyList.Last().localPosition = headPos;
          //  bodyList.Insert(0, bodyList.Last());
          //  bodyList.RemoveAt(bodyList.Count - 1);
            //第二种方法 蛇尾到蛇身第一个结点都往前面挪动
            for (int i = bodyList.Count - 1; i >= 1; i--)
            {
                bodyList[i].localPosition = bodyList[i - 1].localPosition;
            }
            //蛇身第一个结点到旧头部位置
            bodyList[0].localPosition = headPos;
        }
        
    }

其中x,y是玩家所控制的移动方向的偏移单位。

而蛇的增加原理是直接实例化一个蛇身在远处 放入蛇身列表即可。放在远处的意思是实例化在玩家视野范围外,当蛇头移动后,身体会出现在视野内。

上面那个Move方法是每帧都会执行的,而控制蛇移动方向是直接改变x,y那2个值即可,如向上就是(0,-y)这样,当然有个问题就是你原本是朝下的 就不能朝上跑,只能往左、右、下跑,如果你原本朝下 突然反转180°跑的话 会撞到自身,从而导致游戏失败,对玩家不会很友好,在控制方向的时候,得加上一个判断即不能朝反方向跑。

猜你喜欢

转载自blog.csdn.net/qq_39574690/article/details/89068305