Unity小游戏——打飞碟

一、前言

本文将介绍如何使用 Unity 实现经典的打飞碟游戏,本项目采用通过 MVC 架构并且实现了动作分离,使代码结构清晰、功能模块化。本文将详细阐述游戏的背景与规则、项目模块结构,以及各模块中类和接口的主要功能和交互。

项目演示和源代码URL如下:

视频演示:Unity小游戏HitUFO演示视频_哔哩哔哩bilibili_演示

https://www.bilibili.com/video/BV1feUCYJEos

源代码:22331077/3D游戏编程与设计 - Gitee.com

https://gitee.com/sysu-os-22331077/3d-game-programming-and-design/tree/master/lab8-HitUFO

二、游戏介绍

游戏规则:

  • 游戏有 n 个 round,每个 round 都包括10 次 trial。
  • 每个 trial 的飞碟的色彩、大小、发射位置、速度、角度、同时出现的个数都可能不同。它们由该 round 的 ruler 控制。
  • 每个 trial 的飞碟有随机性,总体难度随 round 上升。
  • 鼠标点中得分,得分规则按色彩、大小、速度不同计算

三、UML图 

四、项目架构

本游戏项目架构与牧师与魔鬼类似,下面仅介绍新的功能。

1.CCAction模块

1.1飞碟抛物线运动(运动学(CCActionManager)/物理(PhysisActionManager)模式)

运动学模式根据重力影响计算各个时刻的速度矢量 (currentVelocity) ,从而实现了飞碟的抛物线运动。飞碟的旋转方向与其运动轨迹一致,同时通过边界检测功能实现对飞碟状态的管理。

物理模式通过启用物理引擎,将飞碟的运动逻辑交由 Unity 的刚体系统控制,从而实现了飞碟的抛物线运动。

2.Controllers模块

2.1.飞碟获取规则结构体(Ruler)

Ruler 结构体定义了飞碟的各项属性,包括飞碟的大小、初速度、颜色、飞行方向和初始位置。同时提供了GetRandomRuler函数用于生成随机的Ruler。飞碟工厂将根据Ruler 设置飞碟。

2.2.飞碟工厂(DiskFactory)

飞碟工厂(DiskFactory)是一个简单的对象池管理器,用于高效管理飞碟对象的创建和回收,避免频繁地销毁和重新实例化飞碟对象,提升游戏性能。

主要功能:

  1. 飞碟的获取 (GetDisk)

    • 根据给定的规则 (Ruler) 提供一个飞碟对象。
    • 如果对象池中存在空闲飞碟,从空闲队列中取出。
    • 如果对象池中没有空闲飞碟,则实例化一个新的飞碟对象。
    • 根据 Ruler 设置飞碟的属性,包括速度、颜色、大小和初始位置。
    • 将飞碟对象设置为可见,并加入正在使用的队列。
  2. 飞碟的回收 (FreeDisk)

    • 将不再使用的飞碟从“正在使用”队列中移除,并放入“空闲”队列。
    • 将飞碟对象设置为不可见 (SetActive(false)),以节省系统资源。

2.3.记分员类(ScoreRecorder)

计分员类(ScoreRecorder)负责记录和计算游戏中的得分,根据飞碟的大小、颜色和速度确定分数。它提供了一个Record方法,用于对每个击中的飞碟进行计分。

必要性:

  1. 集中管理得分逻辑: 通过封装计分逻辑,使得得分计算清晰且易于维护。
  2. 灵活性和扩展性: 如果以后需要调整计分规则,只需修改该类而无需改变其他部分代码。

通过分离计分功能,实现了代码的职责分离,提升了整体设计的可维护性和复用性。

2.4.回合管理器(RoundController)

回合管理器类负责飞碟射击游戏的整体流程控制,其核心为管理回合数据并按规则发射飞碟。

此外,回合管理器类还是游戏核心逻辑的实现者,它协调各模块(如工厂、记分器、动作管理器等),确保游戏按预定规则顺利运行,同时与主场景控制器协作以更新界面和状态,是整个飞碟射击游戏的核心调度器。

2.5.主场景控制器(FirstController)

主场景控制器负责协调游戏的各个部分,包括回合控制、视图更新和游戏状态管理。它通过与 RoundControllerView 组件的交互,控制游戏的回合数、得分和界面显示。该类提供了管理游戏状态的功能,如启动、暂停、游戏结束等,并根据状态更新相应的用户界面。此外,主场景控制器还负责处理玩家射击操作,检测鼠标点击是否命中飞碟。

3.models模块

3.1Disk

Disk用于存储飞碟的基本信息,包括大小、颜色、初速度。上述信息将用于计分员的计分过程。

4.View模块

4.1游戏视图(Views)

该游戏包含三个主要界面:

主页(游戏开始前):该界面可选择运动模式,以及点击开始游戏。

游戏界面(游戏进行中):该界面左上角显示当前游戏信息,包括得分、轮次、本轮当前测试次数。点击右上角的返回按钮可返回主页。在该界面可点击鼠标左键射击飞碟.

重开界面(游戏结束后):该界面比游戏界面增加了一个重开按钮,点击重开按钮可重新开始游戏(初始化数据后直接跳转到游戏界面)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值