Unity3d-learning 物理碰撞打飞碟小游戏

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

改进飞碟游戏

游戏内容要求
  1. 按 adapter模式 设计图修改飞碟游戏
  2. 使它同时支持物理运动与运动学(变换)运动
代码基础

因为上周的作业实现结果并不理想,所以,此次改进不准备在原有代码上完成,使用了师兄的代码,在其基础上完成本次作业。

具体实验过程
基本思路(自顶向下分析)

此次实验的目的是实现Adapter模式,使得运动行为可以有两个接口,分别由运动学和物理运动完成飞碟飞行的功能。

所以,从模块设计上来看,首先应该要在SSActionManager中实现普通游戏对象的Update和刚体游戏对象的FixedUpdate的区分,他们使用不同的场景更新函数,使用一个bool型标记flag来区分。
其次,需要从SSActionManager类派生出一个改进的游戏动作管理类ModifiedActionManager类,用于实现对物理运动的游戏对象的运动动作管理。

因为要使用Adapter模式,所以需要实现一个interface接口ActionManagerAdapter来被CCActionManager类(运动学运动行为管理)和ModifiedActionManager类(物理运动学行为管理)分别实现,这样场记就可以通过这个接口方便的选择调用哪一个完成动作管理。具体实现在于,在CCActionManager类ModifiedActionManager类override的Start函数中分别使得base.flag=truebase.flag=false

在具体的行为类CCFlyAction类中,因为游戏对象可能拥有刚体性质,所以需要对gameObject.GetComponent<Rigidbody>()进行判断,若该值不为空,则表明具有刚体性质,那么需要设置刚体的一些属性,比如velocity速度值进行设置,而且,刚体在游戏暂停时,也需要保持当前状态不可以动,所以需要有一个函数来完成对velocity属性和useGravity属性的设置,令速度归零且不受重力影响(静止)。这个方法需要最终被ModifiedActionManager类通过对游戏状态的判断决定是否调用。

最后是DiskFactory类,它需要决定是否为游戏对象添加刚体性质,根据传入的创造实例的需求确定。

流程图描述
</
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值