近日在做一个类似于ios手游《贪吃三国》的3D贪吃蛇游戏。

一、移动

在之前的项目中,移动运用的是Unity的AStarPathFinding插件。使每一个贪吃蛇元素的移动目标点为前一个元素,蛇头控制移动方向,发现效果不是很好。

后来查到了一个小游戏贪吃蛇算法原理,如下。

二、2D游戏、像素游戏贪吃蛇算法原理

红色是蛇,蓝色是食物
先来看看蛇的构造

可以看到,蛇其实是由1个1个正方体拼成的。每个正方体的左上角是他们的坐标。在程序中,我们可以用一个数组表示一条蛇。数组的每一个位置存放一个正方形的坐标
如:
snakeArr = [(10,0),(20,0),(30,0),(40,0)];
在画蛇的时候,我们只需要遍历数组,根据数组里面的坐标在画布上画出一个一个的正方体就变成一条蛇啦。
至于蛇的行走怎么办?如下一步,蛇往上走了。

若下一步往上走,则下一个点为数组首点的横坐标不标,纵坐标+10
nextPoint = new Point(snakeArr[0].x,snakeArr[0].y+10);
接着,我们在数组的头部插入nextPoint,然后把数组尾部的数据去除。数组变成这个样子:
snakeArr = [(10,10),((10,0),(20,0),(30,0)];
是不是和数据结构里面的“队”很类似?。头位置作插入,队尾作删除。

只要知道蛇头的移动方向,计算下一个蛇头点,插入蛇头,删掉蛇尾,就可以实现像素蛇的移动。

三、基于贪吃蛇算法原理的3D贪吃蛇移动

//Vector3 nextDirection 当前蛇头方向 上、下、左、右
//snakePosList 蛇的数组 snakePosList[0]蛇头
Vector3 nextpos = snakePosList[0]+nextDirection*1f;//插入下一个蛇头位置,删除蛇尾设置
snakePosList.Insert(0,nextpos);
snakePosList.RemoveAt(snakePosList.Count -1);
//利用TweenPosition,使角色向下一个目标点缓动
for(int i = 0 ; i < RoleList.Count ; i++)
{RoleList[i].tp = TweenPosition.Begin(RoleList[i].gameObject,1f,snakePosList[i]);
}

Unity-关于一个3D贪吃蛇的走路算法相关推荐

  1. 诺基亚3d贪吃蛇java版_诺基亚3D贪吃蛇游戏下载-游戏大玩家

    <诺基亚3D贪吃蛇>是一款非常魔性有趣的贪吃蛇小游戏,游戏把传统的贪吃蛇界面进行了改进,创造出一个全新的3D炫彩界面,看着爱吃豆豆的贪图蛇行走在立体空间,摇晃着它圆滚滚的身体,超级搞笑有意 ...

  2. 诺基亚3d贪吃蛇java版_3D贪吃蛇诺基亚六边形

    3D贪吃蛇诺基亚六边形是一款十分经典的贪吃蛇游戏.3D贪吃蛇诺基亚六边形是曾经的手机巨头诺基亚在自己的产品上内置的一款贪吃蛇游戏,这款贪吃蛇从2D空间进化到了3D空间,玩家将在一个立体的六边形内操控贪 ...

  3. 手把手教你做一个Java贪吃蛇小游戏

    大家好,我是孙不坚1208,这篇博客给大家分享一下:如何做一个贪吃蛇小游戏(Java版)的exe应用程序,希望能给需要帮助的朋友带来方便. 手把手教你做一个Java贪吃蛇小游戏的exe应用程序 一.J ...

  4. java3d酷眩贪吃蛇下载,100行JS实现HTML5的3D贪吃蛇游戏

    js1k.com收集了小于1k的javascript小例子,里面有很多很炫很酷的游戏和特效,今年规则又增加了新花样,传统的classic类型基础上又增加了WebGL类型,以及允许增加到2K的++类型, ...

  5. 如何使用javascript制作一个网页端3D贪吃蛇游戏(附源码及链接)

    先来看游戏的最终效果: 3D网页版贪吃蛇游戏 下面来具体讲一下如何实现. 该游戏使用Hightopo的SDK制作,总共100多行代码,没有WebGL基础的同学们也可很快掌握. 场景初始化 首先,我们对 ...

  6. 【Unity实现经典游戏--贪吃蛇】

    作为一个将来想从事游戏行业的人来说,从一些经典游戏来学习Unity是最好不过的了,在这里我就介绍一下这次做的贪吃蛇. 贪吃蛇制作教学 详细的可以从上面链接进去学习,素材也从上方链接中取得.如果只是想了 ...

  7. python的ai写作_神奇,用Python写一个AI贪吃蛇,真的可以追着你跑的那种

    语言选择 Life is short, use python! 所以,根本就没多想,直接上python. 最初版本 先让你的程序跑起来 一开始我的目标仅仅是让程序去控制贪吃蛇运动,让它去吃食物,仅此而 ...

  8. 使用unity无脑制作贪吃蛇

    导入资源包 1.制作一个如下图所示的UI和层级关系. ①首先在UI里创建一个image改名为Bg(属性面板附上背景表格),在Bg下面设置子物体(image)也就是所有食物. ②在Canvas下创建一个 ...

  9. “我想玩游戏!” 大佬:玩啥游戏,教你做一个智能贪吃蛇游戏!

    作者 | 李秋键 责编 | Carol 出品 | AI科技大本营(ID:rgznai100) 如果说这几年网络上最为常见的词语,其中必然会提到的便是人工智能. 人工智能的发展已经影响到了我们的日常生活 ...

最新文章

  1. ATL::CStringA和std::string之间转换的一些误区
  2. 1.4 异常处理机制及异常处理的基本结构
  3. CUDA Study ---- Hardware Architecture
  4. vue2.0框架认识
  5. circle后面是什么意思 python_python小课堂16 - 函数篇
  6. 最优化课堂笔记08——非线性规划中的一些其他方法(考试你懂得)
  7. 如何安装mysql 5.6_如何通过编译工具安装mysql 5.6
  8. apache php 整合 linux,apache集成php5.6方法分享
  9. 【目标定位】基于matlab扩展卡尔曼算法SLAM(运动轨迹+误差 )【含Matlab源码 1637期】
  10. Spring Cloud Security OAuth2授权模式和资源服务器
  11. linux 伪静态 cms,常用CMS建站程序的Nginx伪静态规则大全
  12. ImageMagick-libs安装报错
  13. Spring Boot 动态设置数据库密码,密码加密,密码单独处理
  14. 【图论训练】天气晴朗的魔法【最小生成树】
  15. 使用PHPstudy在Windows服务器下部署PHP系统
  16. 架构设计参考项目系列主题:智能风控决策引擎系统可落地实现方案:风控监控大盘实现
  17. LeetCode575
  18. 阿里云服务器选择不同的地域有何区别,应该如何选择?
  19. 连接 mysql 数据库的正确方法是_连接 MySQL 数据库的正确方法是
  20. GPU高级调试与优化

热门文章

  1. CactiEZ weathermap插件任意文件写入
  2. 电脑跳出屏保怎么处理,电脑跳出游戏如何解决
  3. Android 8.0(O版本)
  4. 强化学习系列之翻译OpenAI用户手册(一)
  5. Double Q-Learning 阅读记录
  6. php获取网址怎么缩短,PHP网址缩短代码(生成短网址)_PHP教程
  7. javaWeb(购物车项目)
  8. Spring框架知识点总结
  9. 三个闭环负反馈PID调节系统:电流环、速度环和位置环的关系
  10. 复合函数【结合例题】