改进飞碟游戏
游戏内容要求
- 按 adapter模式 设计图修改飞碟游戏
- 使它同时支持物理运动与运动学(变换)运动
代码基础
因为上周的作业实现结果并不理想,所以,此次改进不准备在原有代码上完成,使用了师兄的代码,在其基础上完成本次作业。
具体实验过程
基本思路(自顶向下分析)
此次实验的目的是实现Adapter模式,使得运动行为可以有两个接口,分别由运动学和物理运动完成飞碟飞行的功能。
所以,从模块设计上来看,首先应该要在SSActionManager中实现普通游戏对象的Update和刚体游戏对象的FixedUpdate的区分,他们使用不同的场景更新函数,使用一个bool型标记flag来区分。
其次,需要从SSActionManager类派生出一个改进的游戏动作管理类ModifiedActionManager类,用于实现对物理运动的游戏对象的运动动作管理。
因为要使用Adapter模式,所以需要实现一个interface接口ActionManagerAdapter来被CCActionManager类(运动学运动行为管理)和ModifiedActionManager类(物理运动学行为管理)分别实现,这样场记就可以通过这个接口方便的选择调用哪一个完成动作管理。具体实现在于,在CCActionManager类和ModifiedActionManager类override的Start函数中分别使得base.flag=true和base.flag=false。
在具体的行为类CCFlyAction类中,因为游戏对象可能拥有刚体性质,所以需要对gameObject.GetComponent<Rigidbody>()进行判断,若该值不为空,则表明具有刚体性质,那么需要设置刚体的一些属性,比如velocity速度值进行设置,而且,刚体在游戏暂停时,也需要保持当前状态不可以动,所以需要有一个函数来完成对velocity属性和useGravity属性的设置,令速度归零且不受重力影响(静止)。这个方法需要最终被ModifiedActionManager类通过对游戏状态的判断决定是否调用。
最后是DiskFactory类,它需要决定是否为游戏对象添加刚体性质,根据传入的创造实例的需求确定。

本文介绍了在Unity3D中改进飞碟游戏,采用adapter模式,支持物理运动和运动学运动。文章详细阐述了设计思路、流程图、实验过程,包括如何区分普通和刚体游戏对象,实现接口以支持两种运动方式,并对比了与师兄作业代码的差异。同时,提供了代码示例和视频演示,展示了如何解决物理运动中的暂停和恢复问题。
最低0.47元/天 解锁文章
4313

被折叠的 条评论
为什么被折叠?



