牧师与魔鬼——动作分离
运行方法
项目地址
请将Assets
文件夹覆盖您本地项目Assets
的文件夹,然后把太阳光删去,再点击运行即可运行。
基本演练
场景的实现
首先将Fantasy Skybox FREE的贴图拖入天空盒skybox如图所示的位置中。
创建一个地形,在inspector中选择第二个按钮,绘制起伏的地形,当然也可以通过修改Raise or lower terrain
属性栏的选项来选择给地形打洞等细节操作。
在Asset Store中下载树木,然后选择Terrain->Inspector
的第三个按钮树木,在edit trees
中编辑你要放置的树木种类,然后便可以在地形上尽情种树。
此时地形还是一个裸露的地皮,在Asset Store中下载地形,选择Terrain->Inspector
的第四个按钮,在edit details
中选择你的地形材料,为地形种上草。
运行场景如上图所示。
游戏对象的使用总结
使用Unity自带的预制,例如第一节课中砖块构建墙的代码中:
GameObject obj = GameObject.CreatePrimitive(PrimitiveType.Cube);
Resources目录下prefabs目录下可以存放预制动态加载
GameObject ball = (GameObject)Resources.Load("/prefabs/ball");
动态修改对象位置
Gameobject.transform.position = new Vector3(0.5f, -0.5f, 0);
以上为用代码修改物品属性的常用方法,剩余的便是在Unity界面中手工增加属性,例如上方绘制地形时树、草的选择,球的属性的选择等等。
牧师与魔鬼——动作分离
根据课上所讲知识点,UML类图绘制如下:
在上一次作业中,所有的功能都由Director
类实现。而在本次项目中,由FirstController
实现Director
类相关接口,而人从船上岸,从岸上船,船的移动的动作则由三个类分别实现。除此之外,需要一个单独的裁判类Judge
时刻判断游戏是否结束,通知场景控制器游戏结束。具体实现代码以及思路仍然沿用上一次的代码即可,但是在类的功能上较上次有较大差异。
运行效果如下图: