本人目前大一,双非一本,谨以此博客,记录日后的unity学习过程与算法训练。希望能同大家一起进步!也希望三年后回过头来能看到一个优秀而拼搏的自己!

话不多说,上我的第一个demo(虽然是跟着视频做的)就是一个简陋版的贪吃蛇啦!

首先是添加最基础的scene,我们添加plane(地面),player(玩家),再添加几个cube然后通过改变他们的参数来控制它们的大小及形状。需要注意的是,为了让我们的每一个游戏物体都看起来生动,我们需要为他们添加材质。

在Project操作框下面的Assets里面新增一个文件夹Material来存放我们所有游戏物体所需要使用到的材质。如图,我已经添加好了player,plane以及food的材质。

我们可以在每个材质的属性里面更改它们的颜色,光滑度,阴影等参数,设置成我们需要的大小之后,我们需要通过拖拽的方式将我们的每个材质逐一对应地作用到我们的游戏物体上。

之后我们的每个游戏物体就具有自己的颜色跟某些特性啦。

虽然我的很简陋,不过凑合着看,这就是最简陋的效果(doge)。

而后,我们需要对我们的player给它添加上一个Rigidbody组件,这个组件的意思是3D刚体组件,通过将它添加到我们的某个游戏物体上,那么该物体就能会拥有最基础的物理属性,比如重力。

之后,我们就可以通过script来控制我们的刚体组件从而控制我们小球的运动。

控制小球运动有很多种形式,我们可以通过控制unity自带的轴控制 ,也可以直接赋予小球恒定的速度来控制他的运动。这里的话,我是通过控制轴来控制小球的运动,也就是通过键盘的w,s,a,d这四个按键来控制。

首先我们需要在Assets里面新增一个scripts的文件夹来存放我们在游戏开发过程中的代码,然后我们在scripts文件夹里面新增一个c#script,命名为player,用它来控制我们的player也就是小球的逻辑表现。

下面就是控制小球运动的代码。

首先我们定义一个公开变量 public Rigidbody rd,用它来指定我们小球的刚体组件。

然后,我们通过如下代码来控制小球的运动。

我们在unity自带的Update方法里面写进如上代码,定义一个变量h来获得我们的水平轴,也就是左右方向,然后定义一个变量v来 获得我们的垂直轴,控制前后方向。

通过刚体的AddForce组件来获得力,Vector3表示一个三维向量的力,即vector3(左右,上下,前后),然后将我们的h跟v赋值到Vector3里面,就大功告成了!在这之后,你的player小球就会拥有移动的能力啦。是不是很厉害呢(bushi

因为我们需要做的是一个类似于贪吃蛇的小游戏demo,所以在这之后,我们应该做什么呢?没错,就是创建一些食物来供我们的player吃。我们将其称为food。由于博主也是刚刚入门,所以food就是用一些完全一致的cube来充当。在这里,我们又将接触到新的概念——预制体。

什么是预制体呢?

在Unity3D里面我们叫它Prefab;我们也可以这样理解:当制作好了游戏组件(场景中的任意一个gameobject),我们希望将它制作成一个组件模版,用于批量的套用工作,例如说场景中本质上要重复使用的东西,比如:敌人、士兵、子弹或者一个砖块完全相同的墙体。这里说本质是因为默认生成的prefab其实和模版是一模一样的。就像是克隆体,但生成的位置、角度或者一些属性不同(这个就好像c++里边的类一样);

这样看来,Prefab对于我们开发unity3d相当重要。

好了,下边开始介绍如何制作Prefab。

首先我们要在Assets里面新建一个空的文件夹,将它命名为Prefabs,然后在Scene里面新建我们需要的游戏物体,将它拖拽到我们的Prefabs里,就建成一个预制体了。之后我们可以直接在我们的Prefab里面将我们放进去的游戏物体拖到我们的场景中,就形成一个个拥有相同属性的food啦。如下图。

所有黄色的小方块就是我们的food。之后我们对它们在场景界面进行的所有操作,只需要更改Prefabs里面的food就可以了 ,非常方便。为了在对它们书写脚本时一致,我们还需要将Prefabs里面的food的标签添加为Food,这样我们在书写脚本时,只需要获取到预制体上面的Food标签,就可以对他们所有进行控制了。

如上图,我们将预制体的Tag定义为Food。

在游戏中,大部分具有效果的道具它们都是比较特别的,比如会旋转,具有光效,由于刚入门,在这里我们就只设置了旋转效果。新建一个代码页,命名为Food,我们用它来控制我们的食物。我们通过transform类来获取到Rotate这一函数,也就是自身的旋转函数。Transform.Rotate传入了一个欧拉角三元组,只有一个参数“角度”,我们用它来使物体每秒自己旋转一定的角度。代码如下:

这个代码的效果就是让我们的食物每帧顺时针地旋转5° 。

解决了player的移动,food的动效,接下来我们要考虑的,就是游戏最核心的部分,控制我们的player吃到食物后并且消除它。这里又要引入unity API的两个重要组件:碰撞器与触发器。

要产生碰撞必须为游戏对象添加刚体(Rigidbody)和碰撞器,刚体可以让物体在物理影响下运动。碰撞体是物理组件的一类,它要与刚体一起添加到游戏对象上才能触发碰撞。如果两个刚体相互撞在一起,除非两个对象有碰撞体时物理引擎才会计算碰撞,在物理模拟中,没有碰撞体的刚体会彼此相互穿过。

物体发生碰撞的必要条件:两个物体都必须带有碰撞器(Collider),其中一个物体还必须带有Rigidbody刚体。

碰撞器是触发器的载体,而触发器只是碰撞器身上的一个属性。

  • 当Is Trigger=false时,碰撞器根据物理引擎引发碰撞,产生碰撞的效果,可以调用OnCollisionEnter/Stay/Exit函数;
  • 当Is Trigger=true时,碰撞器被物理引擎所忽略,没有碰撞效果,可以调用OnTriggerEnter/Stay/Exit函数。

如果既要检测到物体的接触又不想让碰撞检测影响物体移动或要检测一个物件是否经过空间中的某个区域这时就可以用到触发器。

例子:

碰撞器:汽车被撞飞、皮球掉在地上又弹起效果。

触发器:人站在靠近门的位置门自动打开效果。

那在这里,很明显我们需要我们的食物变成触发器,即:在发生碰撞后,没有碰撞效果,直接吃掉食物,那食物又该怎么吃,我们采用最简单的办法,直接将这个物体销毁,就能让我们的food看起来是被吃掉一样啦。

所以我们的代码设计思路是:在player与food发生碰撞时,利用触发检测,销毁掉食物,我们的吃小球方法就完成啦。代码如下。

具体的语法就不再详细解释啦,这里我们调用unity自带的方法OnTriggerEnter,在发生触发时,如果触发物体的标签是食物,就用Destory这一函数摧毁掉该物体。over~

在游戏中,还有一个相当重要的API,就是我们的main camera。它控制着我们进行游戏时的主视角,在这个游戏中,我们需要让我们的游戏物体始终处在视野中央,于是我们又需要用新的脚本来控制我们的相机的移动。这里其实是一个很简单的数学算法,保证我们相机跟游戏物体的坐标相对不变,就可以实现让我们的player始终处在视野中央。新建代码页,来控制我们主相机的跟随。

最后的部分,为了让我们的demo更像一个真正的游戏,我们给它添加两个UI文本,一个来显示分数,一个显示胜利条件。

代码如下。

至此,我们这个极简版的贪吃蛇demo就算完成啦。说难不难,但对于刚接触unity的同学来说,这种入门demo其实是很适合新手的。这也是本博主的第一个游戏demo,大喊一声:好耶!

也希望以后能做出更多更优质的demo,跟大家一起进步,干巴爹!

我用unity开发的第一款游戏demo心得相关推荐

  1. 我开发的第一款HTML5游戏《驴子跳》

    转自   http://www.iteye.com/topic/1122395 经过两个多月断断续续的开发,我的第一款游戏<驴子跳>终于完成了,此时,我已经迫不及待地想跟大家分享这个过程, ...

  2. 小白第一款游戏《跳鸭跳》终于上线了

    我花了差不多1个多月的时间,终于上线了自己人生第一款小游戏,然后激动地整夜睡不着觉,happy ing-        说起我为什么做游戏,其实就是因为一个情节吧.2002年我接触了网游<奇迹& ...

  3. 作为一名83岁的长者,我开发了一款游戏App

    时间会让人增长岁数,但不是每一个人都会变老.想要保持年轻的最好方式,就是不断学习新知. 这就是为什么我在过去的两年中尝试着开发了一款移动 App.更准确地说,我和一帮移动应用开发者们通力合作,将一种历 ...

  4. Unity入门:第一个游戏

    Unity官网提供了详尽的文档和丰富的教学视频,昨天跟着视频做了一个简单的3d游戏"roll-a-ball".游戏涉及了许多Unity的基本知识,用来入门很不错. 这篇博文并不讲述 ...

  5. 用Unity开发2D消除类游戏的素材资源精选

    本文精选了一些用Unity制作2D消除类游戏的UI素材.音频资源和完整项目. 常见的消除类游戏种类有:三消.六边形三消.点点消.连连消.泡泡龙类型消除.连连看.1024类型消除等.也有各种各样和其他元 ...

  6. python编程游戏手机版_利用Python开发手机同款游戏:开心消消乐

    手机上面的开心消消乐,我想大部分人都是玩过的吧,今天小编就教大家如何用python开发这款游戏 不过只有十个关卡,不像手机里面那么多的关卡!不过游戏的画面和bgm都是同款的哦~ 效果图 基本配置 wi ...

  7. 【新年第一篇博客】自己完成的第一款游戏 FlappyBird

    游戏简介 <flappy bird>是一款由来自越南的独立游戏开发者Dong Nguyen所开发的作品,游戏于2013年5月24日上线,并在2014年2月突然暴红.2014年2月,< ...

  8. 利用Python开发手机同款游戏:开心消消乐

    手机上面的开心消消乐,我想大部分人都是玩过的吧,今天小编就教大家如何用Python开发这款游戏 不过只有十个关卡,不像手机里面那么多的关卡!不过游戏的画面和BGM都是同款的哦~ 效果图 基本配置 Wi ...

  9. 普本在校生是如何零基础在一个月内开发出第一款微信小程序的

    先自我介绍一下,我是一个普通本科的大三在读生,在2020年春节前后,自己一个人开发并上线了第一款微信小程序,后续陆续开发了N款小程序,并且自己通过毕设.课设的开发在2020年上半年的疫情期间挣了一万多 ...

最新文章

  1. 大数据环境下该如何优雅地设计数据分层
  2. bzoj 5092: [Lydsy1711月赛]分割序列
  3. 环信 之 通信过程及聊天记录保存
  4. 浅析网站流量出现异常情况应怎样解决?
  5. 图像识别中距离变换的原理及作用详解,并附用OpenCV中的distanceTransform实现距离变换的代码
  6. web前端试题和答案
  7. 玩够了没,开始奋斗吧?
  8. 怎么在php登录首页添加样式,首页登录后怎么在首页显示用户名以及隐藏登录框?...
  9. Docker Engine在CentOS上的安装
  10. [SSH] 为 GitLab 帐号添加 SSH keys
  11. Oracle11使用现在数据库文件,oracle11g 重装操作系统后,如何利用原有oracle表空间文件还原数据库...
  12. linux 安装simg2img,linux可执行文件执行时提示No such file or directory(docker环境中运行的ubuntu镜像)...
  13. Atitit 模板引擎总结 v4 saa 目录 1. 模板引擎 1 1.1. 构成渲染引擎+指令系统 1 1.2. 模板语法mustache语法 es6 el语法 1 2. 常见模板步骤 1 2.
  14. 软媒魔方6.13正式版:软件管家开启多线程极速下载
  15. 关于如何创造VBS编程语言环境
  16. matlab中的小于等于,ps中如何画出小于等于符号
  17. 最节省计算机硬件,在Word 的文档视图中,最节省计算机硬件资源的是( )视图.
  18. jQuery实现弹幕效果(鼠标单击和键盘回车键)
  19. 视觉算法的工业部署及落地方面的技术知识,怎么学?
  20. 计算机类优质课课件一等奖,小学信息技术《认识画图》优质课比赛课件

热门文章

  1. 力扣:探索初级算法——数组篇——有效的数独
  2. vue+flv.js实现视频播放
  3. ubuntu 安装java运行环境,Ubuntu 安装java环境搭建
  4. SpringMVC总结笔记
  5. SAP各模块优缺点和发展简析
  6. 前端工程化配置-husky + eslint + lint-staged
  7. 使用pytorch进行深度学习网络模型训练,实现车型识别
  8. Centos7下新硬盘的挂载操作
  9. 创建区块计算次数_区块链计算的四个阶段
  10. Asp.NET Core+ABP框架+IdentityServer4+MySQL+Ext JS之部署到Linux