1.初入Unity3d,作为新手的我们第一步当然是登录官网,下载对应的Unity3d。
新手下载个人免费版本即可,下载结束按照默认安装即可。
2.打开unity3d,这里分为Projects与Learn切换界面,这里建议先从Learn中简单案例入手,比如第一章要学习的Roll a Ball
3.创建一个项目,只需要更改项目名称和保存位置即可。等待片刻进入主界面。
这时需要保存一下当前场景(通常游戏有多个场景,但这里我们只用到一个场景)
在项目目录下创建_Scences的文件夹并且把当前场景命名为MiniGame存入_Scences
4.这时候正式开始制作游戏,在hierarchy界面Create一个地面重命名为Ground
我们可以通过Scale的x,z数值改变来盖面地面大小(这里的x,z即为默认的x,y,Unity3d的y为竖直方向)
5.此时需要添加一个玩家对象,这里我们只需要用到球体即可,更改y轴让球体处于地面表层。(在gizmos界面可以关闭线条显示方便操作,当你需要对某个物体进行操作时候,比如Player。点击hierarchy内的Player,光标移动到上方试图按下F或者双击Player即可)
6.玩家入场了,这时我们需要道具的加入,点击hierachy界面添加cube,旋转使其更加好看(这时可以先隐藏player,在inspector内勾选名称前√即可)
7.由于我们需要多个道具,所以我们在这里将道具作为预设内容,新建文件夹Prefabs保存道具,并且在hierachy中添加Pick Ups作为Pick Up的父对象,并且复制粘贴Pick Up
8.这里相机视角需要调整,提高摄像机高度,45度往下拍摄,游戏内为单一的白色,我们现在修改道具以及地面颜色,首先创建Materials文件夹,其中创建Material,设置好颜色拖拽到指定对象即可(设置为全局操作)。
9.此时Player角色还不可以移动别着急,我们需要界定一个区域来保证游戏的内容,这里用cube设置长宽高来防止角色掉下去。
10.好了这时候我们要让小球动起来了,这里我们将要增加一个脚本项目,在Project内创建文件夹Scripts,在Player的Inspector中添加脚本(这里注意脚本内获取刚体,所以Player本身要是刚体)。
11.打开编辑c#脚本,此时我们需要获取键盘输入,利用Input类(查看官方api),在FixedUpdate中执行移动。
我们需要讨论一下FixUpdate与Update,LateUpdate区别
FixUpdate不受机器性能游戏帧率影响,在处理Rigidbody时候用FixUpdate
Update受机器性能影响,不同机器帧率不同,时间间隔也不一样。可在Edit->ProjectSetting->time 找到Fixedtimestep
LateUpdate是在所有Update函数调用后被调用。这可用于调整脚本执行顺序。例如:当物体在Update里移动时,跟随物体的相机可以在LateUpdate里实现
资料参考:http://bbs.9ria.com/thread-417976-1-1.html
12.此时小球已经可以移动,但是与道具无法发生拾取动作,原因是道具默认为静态碰撞器(指的是没有附加刚体而附加了碰撞器的游戏对象。这类对象会保持静止或者很轻微的移动。对于环境模型十分好用,当和刚体碰撞时而不会移动),此时进入方法为OnCollisionEnter(),而这里我们需要进入OnTriggerEnter(),所以最终我们要修改道具为istrigger,添加刚体且设置为kinematic(运动学)类型,添加tag类型为Pick Up便于脚本获取碰撞对象,在Player脚本里添加代码
具体内容必看http://www.mamicode.com/info-detail-477001.html
13.此时我们已经完成了大部分的内容,在此基础上我们对摄像机进行优化,让其跟随Player移动。在Camera中添加脚本CameraController,在其中添加代码这里用到的是LateUpdate(),这里设置player为public,在编辑器中拖拽player到脚本下即可
14.再次对界面进行操作,将道具进行旋转操作,利用脚本实现,在Prefabs中添加脚本。
15.对分数进行采集与判定游戏结束,需要利用到UI界面的添加,在Hierarchy添加UI中的Text放置在界面左上方。由于计数是根据Player收集道具个数增加,所以在PlayerController脚本中设置UI增加。
16.此时整个游戏开发完成,我们保存并发布游戏。
在这里添加或者直接拖拽一开始保存的场景即可,选择好发布的平台发布即可。
最终实现效果,大功告成
这里推荐一个博客,帮助入门学习路径
http://www.cnblogs.com/android-blogs/p/6132965.html
完整项目
https://github.com/sonyi2009/Roll-a-Ball.git