Unity3d 打飞碟 物理运动版

Unity3d 打飞碟-物理运动版github 传送视频演示题目要求改进飞碟(Hit UFO)游戏:按 adapter模式 设计图修改飞碟游戏;使它同时支持物理运动与运动学(变换)运动。Adapter 模式运动学和动力学的物体运动存在区别。在 unity3d 中两种方式会产生不同的效果。使用 adapter 模式,使得游戏能支持两种方式的运动。uml 图变化如下,增加...
摘要由CSDN通过智能技术生成

Unity3d 打飞碟-物理运动版

github 传送

视频演示

题目要求

改进飞碟(Hit UFO)游戏:

  1. adapter模式 设计图修改飞碟游戏;
  2. 使它同时支持物理运动与运动学(变换)运动。

Adapter 模式

  • 运动学和动力学的物体运动存在区别。在 unity3d 中两种方式会产生不同的效果。使用 adapter 模式,使得游戏能支持两种方式的运动。

  • uml 图变化如下,增加了一个接口和方法,场景控制器通过接口调用该方法,而具体的不同的动作控制类将实现该接口,方便场控的调用。
    在这里插入图片描述

实现

效果如下
在这里插入图片描述

  • 和上一个版本的主要区别是添加了刚体后,飞碟碰撞会反弹。

主要写一下修改的地方。

接口

  • 根据模式变化,需要修改接口。新加一个 IActionManager 接口。另外,在 userAction 中添加了 getMode()switchMode() 方法,方便 GUI 获取当前模式和在动力学 (Dynamics) 模式,即物理运动,和运动学 (Kinematics) 模式之间进行切换。
namespace Interfaces {
   
    public interface ISceneController {
   }

    public interface UserAction {
   
        void Hit(Vector3 pos);
        int getScore();
        int getRound();
        bool getMode();
        void stopGame();
        void Restart();
        void switchMode();
    }

    public enum SSActionEventType: int {
    Started, Completed}

    public interface ISSActionCallback {
   
        void SSActionCallback(SSAction source);
    }

    public interface IActionManager {
   
        void MoveDisk(Disk disk);
    }
}

CCPhysisAction 的添加

  • CCMoveToAction 一个道理,CCPhysisAction 也是一个继承了 SSAction 的具体的运动类。CCMoveToAction 是基于运动学的动作变换,是通过计算物体中心的运动方程,轨迹,位移,速度,旋转来直接变换游戏对象;CCPhysisAction 考虑了物体实际的重力和本身的形状,外部力对物体的影响,使游戏对象的运动更加逼真。
  • 通过物理引擎更新的 CCPhysisAction 类需要使用 FixedUpdate (尽管这里只需要在 start() 中赋一次初始速度,无需在 FixedUpdate 中一直添加速度,但为了区别,我还是写了一个 FixedUpdate),所以在其继承的 SSAction 中添加了一个 FixedUpdate 虚函数,然后在 CCPhysicAction 中实现。而需要重写的 Update 函数空着即可。
public class CCPhysisAction : SSAction {
   
    public float speedx, speedy, speedz;
    public float gravity = 0.0f;

    private CCPhysisAction
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值