Unity官方教程滚球游戏实现(Roll A Ball)带工程源码
第一次使用Unity,在学成C#基础之后,迫不及待的照着教程做出了这个游戏,第一课最主要学习的东西就是Unity API的使用及场景中各个界面面板的主要功能,还有各个物体身上的组件的特性,这些我觉得是入门必备的,开始只需要大致理解这个功能的目的是做什么的即可,不用深究,目前Unity官方放出了中文汉化,对学习unity又是轻松许多,但是熟悉了英文之后还是不怎么建议再换回中文,中文的话,脚本中自定义的public的简单字段他都会给你翻译过来…比如脚本中定义的speed字段弄成中文的话就会这样 有时候定义的东西多了的话就会很难找到,有时候单词不认识从代码里记住了英文,出来还得自己翻译一下才能找到中文,如果有哪天出来了完全汉化版本可以尝试一下。
先介绍一下这游戏的功能吧,作为一个入门级别的游戏可以来说游戏逻辑非常简单,控制小球吃到食物,吃光之后便可胜利,这里我改了下逻辑,地图中的食物是随机生成的,吃到一定食物数量之后就会显示胜利的字样。 首先开始先要把地图中的元素都准备好,需要一个Plane或Terrain用来放球,推荐的话是Plane,Terrain属于与地形有关的物体,比较耗费性能。 然后就是需要放上四堵墙来防止小球滚出地图外面,这里用拉伸后的Cube代替。 然后就是小球了,在hierarchy面板里右键,点击3D游戏物体里面的Sphere,创建成功。 还有就是食物了,食物选择用Cube创建,创建好之后可以在inspector面板里的transform组件里修改它的旋转rotation,我这边都改为了45°,这样转起来的话会好看很多。食物需要做成预制体,不然销毁了食物再生成就找不到可以生成的对象了。 再就是UI了,也为右键选择UI下面的Text,修改text为Score=也可不修改,在代码里修改也是可以的。 现在就要在inspector面板里面设置需要的组件了,先分析需求,角色需要滚动,所以在球上面添加一个脚本组件命名为RowBall,名称随便定义,但是大小写有多种方法可采用,具体方面可百度。既然需要滚动还需要添加碰撞体和刚体组件,碰撞体在生成物体时已经有了,只添加刚体Rigidbody就可以了。 食物方面要有的逻辑为:玩家吃到食物时,食物要消失,且食物不可以阻碍玩家前进,所以在食物上面添加FoodTrigger脚本,另外需要把boxcollider上面的isTrigger选项打开。 另外需要场景中不断生成食物,所以要在任意一个不会被销毁的对象上面挂载生成食物的CreateFood脚本,玩家的视角是第三人称固定视角,所以需要摄像机绑定CamaraPosition脚本跟随玩家的位置,至此inspector面板也设置完毕。 如果也要像我这样方块有颜色的话,需要在project面板里添加material材质球,只把颜色改变然后保存,直接拖到你想更改的物体上就可以了。之后的工作就是把场景里面的游戏物体整理一下,调到你认为合适的UI大小。 之后便是代码部分,按照你的需求实现便可以,最好要在创建游戏之前写一个开发文档,这个游戏有什么功能,功能下面又分为什么小模块,模块要怎么实现,这些都想清楚了之后再写代码会事半功倍,还有要养成良好的写注释的习惯,这样别人调试你的代码时候都会很清楚的认识,代码我就不贴了,贴上项目工程文件及导出的游戏文件了。
后续,还可以添加很多功能,例如主界面,小球碰到墙会死亡,赢了之后暂停游戏并返回主界面,不过是学习以后的第一个游戏,就不做那么复杂了,第一次写教程,有很多没说明白的方面欢迎问我,有不对的方面欢迎指正!