unity3d 打飞碟之升级版
应用Adapter设计模式统一物体运动接口. 
Hit UFO v2
先看一下这次设计的结构:
在我的设计中, RoundController 就是 FirstController.
在v1中, 由 FirstController 设置位置并执行运动.
而在v2这里, FirstController 需要 Disk 飞出时, 调用 IActionManager.PlayDisk() 就 OK 了, 实现封装的同时还能根据不同的需要(运动学, 动力学)来使飞碟运动.      
当然啦, 大部分游戏过程的控制, 如, 计时, 下一回合等等, 还是由 FirstController 处理的.
具体在游戏中选择那个方式运动, 是在这里决定的:
1  | // FirstController 控制的回合结束  | 
IActionManager 接口类就只定义了一个函数, 不知道以后会不会扩展
1  | public interface IActionManager  | 
PhysisActionManager 类, 就是原来的重力+初速度, 没什么变化..
1  | public void PlayDisk(GameObject disk, Vector3 initPosition)  | 
而运动学部分就不太一样, 我这里新建了一个 UFOAction 类, 继承了 SSAction.
这个类就是来定义 UFO 的运动的, 并由 SSActionManager 管理.
具体动作是每帧都往速度方向移动, 添加向下的力.
1  | public class UFOAction : SSAction  | 
然后让 CCActionManager 作为回调处理类, 但实际没有执行任何操作.
同时 CCActionManager 也是 IActionManager 的一个实现, 调用 PlayDisk 方法时让 SSActionManager 运行 UFOAction.   
1  | public class CCActionManager : SSActionManager, ISSActionCallback, IActionManager  | 
大概就是这样, 射箭初步有一些思路, 若时间充裕到时会完成.