Unity官方实例——Roll A Ball 开发流程记录
1. 新建项目
新建一个项目,命名为Rolling Ball,选择3D游戏模式。
2. 添加游戏对象
2.1 Plane(平台)
在Hierarchy窗口中通过右键新建一个Plane,并重命名为Ground。
创建成功后,将Ground的Scale X和Z设置为2。(可以在Transform窗口中直接对物体的属性进行设置。
2.2 Sphere(球体)
添加方式和平台一样,选择添加Sphere,并重命名为Player。
将Player的Position属性中的Y值设置为0.5。
2.3 设置灯光
首先,在Hierarchy窗口中创建一个空的GameObject(右键->选择“Create Empty),并重命名为Light。
将Directional Light重命名为Main Light,并拖到Light中。(把所有灯光对象放到Light中,方便统一管理。
为了将Player和阴影进行区分,再添加一个光源照射球体:
右键点击Light -> 选择“Light” -> 选择“Directional Light”,将新建的灯光重命名为Fill Light。
选中Fill Light,将其Color设置为红色(便于和Main Light进行区分),把Rotation属性分别设置为-30, -60, 0。
3. 让球动起来
首先,选中Player。
3.1 给Player添加刚体属性(Rigidbody)
在Inspector窗口中点击Add Component -> 输入Rigidbody并选择(刚体可以赋予Player物理效果,检测物理碰撞)。
3.2 给Player添加脚本(Script)
在Assets中创建一个文件夹,命名为“Scripts”,用来存放脚本文件。
在Inspector窗口中点击Add Component -> 选择“New Script” -> 命名为“PlayerControl” -> 点击“Create and Add”,在Project窗口中将PlayerControl放入Scripts文件夹中。
(或者右键点击Scripts -> 选择“C# Script” -> 命名为“PlayerControl” -> 在Inspector窗口中点击Add Component -> 输入PlayerControl并选择)
添加完成后开始编写脚本
在PlayerControl类中添加一个FixedUpdate方法。
保存修改之后,用public修饰的变量可以在编辑器中显示并进行修改,将speed的数值设置为500。
4. 让摄像机跟随球体移动
选中摄像机,在Inspector窗口中把Position的Y和Z设置为5,-6,Rotation的X设置为45:
这使视角变为45°俯视角:
给摄像机添加一个脚本,命名为“CameraControl”。
脚本编写完成后,在摄像机的Inspector窗口中把脚本的player属性设置为player。(类似于刚刚设置的speed
5. 制作地图边界
因为Player移动出Ground边界后,会往下掉,所以需要一道围墙拦住Player。
添加四个Cube对象,把它们命名为“Border”1/2/3/4,设置好它们的长度后放在Ground的边界上。效果如下:
6. 添加一个可以拾取的物体
6.1 添加一个Cube(方块)
我们用Cube来做一个可以拾取的物体,为了让它看起来与众不同一点,我们让它自动旋转起来。
创建一个Cube -> 命名为“Pick” -> 把它的Rotation的X、Y、Z值都设置为45 -> 然后把它放到一个合适的位置上
6.2 添加一个自动旋转的脚本
命名为“Rotator”:
6.3 制作预制件
为了能够快速制作出更多的可拾取物体、方便统一进行管理,我们要把它做成一个预制件(Prefab):
在Asset文件夹下新建一个文件夹,命名为“Prefabs”,然后将Pick拖到Prefab文件夹中。
然后复制出多个Pick对象,然后放在喜欢的位置上:
6.4 添加可拾取属性
- 给可拾取物体添加一个标签:如果没有制作预制件的话,就只能一个个方块去添加了,但是有了预制件之后,直接修改预制件的属性,就能应用到全部方块上了。
- 选中预制件文件夹中的Pick,创建一个新标签,命名为“Pick”:
- 将Pick方块的标签选为Pick。
- 修改PlayerControl脚本:
- 在Inspector窗口中把Pick预制件设置为碰撞触发器:
7. 制作计分板
7.1 记录玩家分数
修改PlayerControl脚本:
7.2 将分数显示出来
-
创建一个文本UI,然后放在合适的地方。
-
修改PlayerControl脚本:
-
至此,这个实例就已经全部结束了