`
未来程序员
  • 浏览: 26065 次
社区版块
存档分类
最新评论

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

 
阅读更多

近日在做一个类似于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]);
}

 
 

 

分享到:
评论

相关推荐

    贪吃蛇大作战unity3d版_unity3d_unity3d_3d贪吃蛇unity_贪吃蛇大作战_源码

    【贪吃蛇大作战Unity3D版】是一个基于Unity3D引擎开发的复刻版经典游戏,适合初学者进行学习和实践。Unity3D是一款强大的跨平台游戏开发工具,广泛应用于2D、3D游戏及交互式应用的制作。这款项目以贪吃蛇大作战为例...

    unity3d制作贪吃蛇

    - 创建一个新的Unity项目,并设置合适的场景大小,通常为正方形或长方形,以适应游戏界面。 - 添加一个地面平面,作为游戏的静态背景,可以通过创建Plane GameObject并调整其尺寸和材质来实现。 2. **游戏对象与...

    Unity日志输出 Unity-Logs-Viewer

    Unity日志输出插件,在手机和pc上均有用,能很清晰的看到日志打印,非常好用。 使用这个工具,你可以很容易地在游戏内部检查你的编辑器控制台日志!在移动端同样有效! 支持unity2017.4.29 or 更高版本

    Unity-debugging-5.x.zip

    在Unity中,Mono是用于运行.NET框架的一个组件,它处理C#代码的编译和执行。当开发者遇到游戏运行问题或者想要深入理解代码运行流程时,dnspy和mono.dll的组合就显得尤为重要。 首先,了解如何在Unity中使用dnspy...

    unity-classes.jar

    在 UnityPlayerActivity 类,存在 mUnityPlayer.quit() 方法,...查看 unity-classes.jar源码,发现quit()方法会结束整个进程。于是修改jar包,屏蔽结束进程代码,就可以实现退出当前Activity,而又不会退出整个应用。

    Delaunay在unity3d中的算法

    在Unity3D中,我们可以用一组离散的点(如顶点)作为输入,然后通过算法构建出一个满足Delaunay条件的三角网格。 1. **数据结构与基础概念** - **点集**:输入的一组离散点。 - **边**:连接两个点的线段。 - **...

    unity--期末大作业--3D汽车模拟驾驶

    unity--期末大作业--3D汽车模拟驾驶工程文件 unity2019 包括所有素材模型背景图片音乐源代码等 其中有六个场景,三个UI场景三个地图场景 UI界面,交互,3D,场景转换效果 wasd控制汽车,空格停止,shift粒子加速,L...

    vuforia-samples-advanced-android-ios-unity-4-2-3

    vuforia-samples-advanced-android-ios-unity-4-2-3.zip官网下载太慢了,放在网盘方便大家下载

    Unity 3D贪吃蛇游戏源码.zip

    在这款"Unity 3D贪吃蛇游戏源码"中,我们可以深入学习到如何利用Unity来构建经典游戏——贪吃蛇。贪吃蛇游戏自1976年诞生以来,因其简单易懂的玩法和无尽的游戏性而广受欢迎。 源码分析: 1. **游戏架构**:首先,...

    Unity3D贪吃蛇源码

    本资源"Unity3D贪吃蛇源码"提供了一个简单的贪吃蛇游戏实现,旨在帮助初学者理解Unity3D的基本操作和编程原理,特别是与物体移动、算法和碰撞检测相关的知识。 1. **Unity3D基本概念**: - **场景(Scene)**:...

    vuforia-unity-6-2-10.unitypackage

    为了速度慢下载失败或者无法下载的人提供,这是最新的vuforia unity sdk 6.2.10

    unity3D贪吃蛇Demo

    在这个"unity3D贪吃蛇Demo"项目中,开发者利用Unity的特性构建了一个经典的贪吃蛇小游戏,非常适合初学者学习和进行二次开发。这个项目是基于Unity 2019.4.30版本创建的,不过它也兼容更高版本的Unity,这意味着你...

    Unity完整小游戏-贪吃蛇(Unity 2D实现版)

    ### Unity完整小游戏-贪吃蛇(Unity 2D实现版) ...通过以上步骤,你可以构建一个完整的Unity 2D贪吃蛇游戏。这个游戏不仅可以帮助你熟悉Unity的基础组件和工作流程,还能加深对Unity物理系统和游戏设计的理解。

    奔跑系列源码cave-run-3d-unity-game-starter-kit

    "cave-run-3d-unity-game-starter-kit"是一款基于Unity3D的3D跑酷游戏源码,它为开发者提供了快速启动项目的基础框架和资源,帮助开发者节省时间和精力,专注于游戏的核心玩法设计。 首先,让我们深入了解"奔跑系列...

    vuforia-unity-6-0-117.unitypackage

    vuforia-unity-6-0-117.unitypackage 链接地址: https://developer.vuforia.com/downloads/sdk#downloadModal 有时候下载速度比较忙,所以上传一份

    Unity小游戏:贪吃蛇 源码工程 和 成品exe可玩程序。

    在这个“Unity小游戏:贪吃蛇 源码工程 和 成品exe可玩程序”中,我们能够深入学习如何利用Unity来构建一个经典的贪吃蛇游戏。 源码Snake.zip文件包含了游戏的核心代码,这将帮助我们理解游戏逻辑和编程实现。Unity...

    贪吃蛇游戏.rar_.iws.sse_Unity3D 贪吃蛇_unity3D 游戏_zwb_贪吃蛇

    unity3d 贪吃蛇游戏,3d版本的贪吃蛇游戏,可进行空间运动

    Unity3D Unity3D spine-unity-3_5-beta2.unitypackage

    spine-unity-3_5-beta2.unitypackage

    测绘资料-Unity-glTF-Exporter-master-修改索引存储方式-2020-8-19.rar

    总结来说,这个资料包提供的Unity-glTF-Exporter-master版本专注于在测绘场景中提高3D模型的导出效率和文件存储优化,尤其是在索引存储方面。这对于需要处理大规模3D地理数据的专业人士来说,无疑是一份极具价值的...

Global site tag (gtag.js) - Google Analytics