unity入门小游戏贪吃蛇,详细案例

之前已经写过几篇用unity写的小游戏博客,感觉还不错,那么我就继续写下去。 今天写的贪吃蛇的初级版本。

贪吃蛇曾经是风靡全球的游戏,玩法就是一条蛇在吃食物,然后蛇会越吃越长,只要碰到自身,或者蛇头碰到墙体,那就算输。

在这里插入图片描述
首先我们需要做的是加上四面都是围墙。然后主角就是只有一条蛇。食物是随机出现的,并且我们必须要在随机食物的时候需要注意必须不是在蛇的身体上出现。

我们直接来看代码吧。


private IEnumerator Move()
{
    for (int i = bodys.Count; i > 1; i--)
    {
        bodys[i].position = bodys[i - 1].position;
    }
    bodys[0].transform.position = head.position;
    head.Translate(direction * sizeGride);
    isRotating = false;
    yield return new WaitForSeconds(1f/ speed);
    StartCoroutine(Move());
}

上面的代码是蛇的移动。其实主要控制蛇头的方向而已,然后剩下的就是蛇的前一个位置都等于蛇的后一个位置。只要遍历一遍,蛇就会走起来。

private void Rotate()
{
    if (isRotating)
        return;
 
    if (Input.GetKeyDown(KeyCode.W) && direction.x != 0)
    {
        SetDirection(Vector3.up);
    }
    else if (Input.GetKeyDown(KeyCode.S) && direction.x != 0)
    {
        SetDirection(-Vector3.up);
    }
    else if (Input.GetKeyDown(KeyCode.A) && direction.y != 0)
    {
        SetDirection(-Vector3.right);
    }
    else if (Input.GetKeyDown(KeyCode.D) && direction.y != 0)
    {
        SetDirection(Vector3.right);
    }

转向这个比较简单,其实就是用WSAD键控制蛇的上下左右方向移动 ,这里只需要控制到蛇头的下一步位置就行了。

下面是createFood具体的步骤

food = Instantiate(Resources.Load<Transform>("Food"), transform.parent);`

实例化食物

 pointsSnake.Clear();
    pointsSnake.Add(head.position);
    
    for (int i = 0; i < bodys.Count; i++)
    {
        pointsSnake.Add(bodys[i].position);
    }

pointsSnake是用于保存蛇的列表,因为每次都要更新,所以需要清空,然后把全部蛇的点保存起来

List<Vector2> pointsCanNewFood = points.Except(pointsSnake).ToList();
 
    System.Random rd = new System.Random();
    int index = rd.Next(pointsCanNewFood.Count);
    food.position = pointsCanNewFood[index];

把除蛇身体的列表以外的点随机一遍,挑选其中一个点作为食物的新生点。

这个是一个比较基础简单的游戏实例,有兴趣学unity的话,可以加我q:2316773638,本人收徒。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值