3D游戏编程——与游戏世界交互

2023-11-19

HW5

1. 编写一个简单的鼠标打飞碟(Hit UFO)游戏

游戏内容要求:

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

游戏的要求:

  1. 使用带缓存的工厂模式管理不同飞碟的生产与回收,该工厂必须是场景单实例的!具体实现见参考资源 Singleton 模板类
  2. 近可能使用前面 MVC 结构实现人机交互与游戏模型分离

游戏设计:

本次设计使用了单例模式和MVC模式,下面将按照实际设计的顺序来展示本次 Hit UFO 游戏的设计。

  1. 设计飞碟预设

由于U3D没有给我们提供飞碟的形状,所以我们只好自己设计。

我选择的方式是将一个圆球外面再套上一个圆盘,这样就做成了我们小时候印象中最经典飞碟的样子。由于我们需要给飞碟添上颜色,所以还需要给飞碟添上material组件。这就是我们的飞碟预设了。

在这里插入图片描述

在这里插入图片描述

  1. 设计Director

Director 的设计十分简单,使用单例模式。设置一个 Director类 的private static成员变量,并设置一个与之配套的 getInstance() 的成员函数。再设置一个 currentController 的成员变量就可以了。

public class Director : System.Object
{
    private static Director _instance;
    public Controller currentController { get; set; }
    public static Director getInstance()
    {
        if (_instance == null)
        {
            _instance = new Director();
        }
        return _instance;
    }
}
  1. 设计Controller

Controller 的设计也比较简单,它负责统筹各个组件之间的关系,所以在其中我们需要设置一下几个成员变量:_UFOfactory、__director、my_diskfactory ,并对其进行初始化、实例化。需要注意的是, _UFOfactory 采用的是单例模式。

public class Controller : MonoBehaviour
{
    public UFOFactory _UFOfactory;
    public Director _director;
    private GameObject my_diskfactory;
    void Awake()
    {
        Random.InitState((int)System.DateTime.Now.Ticks);
        my_diskfactory = new GameObject("Disk_Factory");
        my_diskfactory.AddComponent<UFOFactory>();
        _director = Director.getInstance();
        _UFOfactory = Singleton<UFOFactory>.Instance;
        _director.currentController = this;
    }
}

<
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

3D游戏编程——与游戏世界交互 的相关文章

  • 【Leetcode】151. 翻转字符串里的单词

    题目描述 给你一个字符串 s 逐个翻转字符串中的所有 单词 单词 是由非空格字符组成的字符串 s 中使用至少一个空格将字符串中的 单词 分隔开 请你返回一个翻转 s 中单词顺序并用单个空格相连的字符串 说明 输入字符串 s 可以在前面 后面
  • Android免打包多渠道统计如何实现,BAT面试文档

    我们程序员经常迷茫于有太多东西要学 有些找不到方向 不知所措 很多程序员都愿意说 我想变得更好 但是更好是什么却很模糊 同时我们又不知道该怎么样去做 我们的生命如此短暂 作为程序员的职业生涯可能会更短 所以我们更加需要充分利用工作 工作间隙
  • opencv resize()函数

    转自 https blog csdn net u012005313 article details 51943442 void resize InputArray src OutputArray dst Size dsize double
  • 在ping服务器时丢包该怎么办?

    一般跨境企业比如说跨境电商 游戏等等都会有海外各个节点服务器的需求 包括对海外服务器的需求 当使用服务器时 难免会出现一些问题 比如说丢包 那么 当服务器丢包的话 该如何处理呢 说到丢包 我们一般是在说PING服务器IP出现的数据包丢失的现
  • ASP.NET Core快速入门(第6章:ASP.NET Core MVC)--学习笔记

    课程链接 http video jessetalk cn course explore 良心课程 大家一起来学习哈 任务40 介绍 任务41 Individual authentication 模板 dotnet new mvc help
  • ChatGPT使用学习(三):ChatGPT桌面版使用

    文章目录 介绍 获取方式 界面展示 介绍 ChatGPT桌面版是指OpenAI推出的针对个人用户的ChatGPT应用程序 它是一个独立的桌面应用程序 可以在本地计算机上运行 而无需依赖互联网连接 这使得用户可以在没有网络连接的情况下使用Ch
  • 论文必备

    点击上方 小白学视觉 选择加 星标 或 置顶 重磅干货 第一时间送达 本文介绍了了12个将神经网络画地更好看的工具 1 draw convnet 一个用于画卷积神经网络的Python脚本 https github com gwding dr
  • 基于单片机的热敏电阻测温设计

    基于单片机的热敏电阻测温设计 1 基本功能 1 具有声光报警功能 2 使用液晶显示 3 温度上 下限报警值设定 温度上 下限报警 4 手动方式设定温度上下限 总体方案设计 温度控制系统主要由温度传感器 热敏电阻 A D转换器 单片机 STC
  • USB硬件设计注意事项

    USB物理层介绍及电路设计注意事项 博文原创 转载请注明出处 USB Universal Serial Bus USB 是英文Universal Serial Bus 通用串行总线的缩写 是一个外部总线标准 用于规范电脑与外部设备的连接和通
  • 【Hello mysql】 mysql的索引

    Mysql专栏 Mysql 本篇博客简介 介绍mysql的索引 mysql索引 索引 索引是什么 索引的分类 索引作用查看 磁盘 mysql的工作过程 认识磁盘 定位扇区 磁盘随机访问 Random Access 与连续访问 Sequent
  • PYTHON编程导论群问题汇总(四)

    Q6 函数局部变量赋值问题 P37 print语句后面的赋值语句使x成为函数g中的局部变量 执行print语句时还没有被赋值 报错的原因不是很理解 bigjing 在回答这个问题前 我们先理解一个规则 全局变量和局部变量同名的时候 局部变量
  • redux-saga原理浅析

    前言 笔者最近在做一些后台项目 使用的是Ant Design Pro 其使用了redux saga处理异步数据流 本文将对redux saga的原理做一个简单的解读 并将实现一个简易版的redux saga Generator函数的自动流程
  • filter() map(),some() every(),find(),findIndex(),reduce()区别和用法

    some every map filter find foreach 一 相同点 1 都是返回布尔值 some every map 2 遍历全部元素 every map 都是遍历完全部元素 3 遇到匹配结果即停止 find some 遇到匹
  • Mac安装SQLmap【亲测有用】

    sqlmap是由Python编写的渗透测试工具 主要用来检测sql注入漏洞 是一款功能强大的sql漏洞检测利用工具 Mac安装SQLmap有很多种方式 此篇文章使用brew install 简单直接 安装过brew的直接忽略前两步 在mac
  • 剑指offer——day1

    题目一 题目主要考察的是对栈和队列的理解和基本实现 typedef int STDataType define DEFSTACKSIZE 100 typedef struct Stack STDataType array int size

随机推荐

  • 华为od机试题3 真题

    华为od机试题 真题 67 最小字符串 66 最长元音字符串 65 字母所在字符串中的位置索引 64 计算图形面积 63 剩余可用字符集 62 字符串解压缩 61 相等的连续子串 59 员工出勤奖 以下题目附带Java解法 是我个人写的 不
  • Vim高级教程:vim-plug安装C/C++插件

    本教程只支持Vim8 本教程为C C 安装插件 其他语言不支持 配套视频教程 废话不多说 开始安装插件 插件不是一个一个安装 而是通过插件管理器vim plug来安装 vim plug会将所有的插件全部安装完成 就不需要手动一个一个安装 第
  • 基于Jmeter实现Rocketmq消息发送

    在互联网企业技术架构中 MQ占据了越来越重要的地位 系统解耦 异步通信 削峰填谷 数据顺序保证等场景中 到处都能看到MQ的身影 而测试工程师在工作中 也经常需要和mq打交道 比如构造测试数据 触发某些业务场景 以及针对mq的性能测试等 目前
  • QueryDet:级联稀疏query加速高分辨率下的小目标检测

    论文 https arxiv org abs 2103 09136 代码 已开源 https github com ChenhongyiYang QueryDet PyTorch 计算机视觉研究院专栏 作者 Edison G 虽然深度学习的
  • 人工智能的发展对教育影响

    人工智能的横空出世给现代社会带来了翻天覆地巨大改变 格物斯坦表示 特别是在青少年阶段 他们 她们 对未知世界从满了好奇 想要去探险 自古英雄出少年 我们的人工智能领域同样也是年轻人未来 大展拳脚 的地方 儿童作为人工智能时代的 原住民 他们
  • RuntimeError: FlashAttention is only supported on CUDA 11 and above

    RuntimeError FlashAttention is only supported on CUDA 11 and above 问题描述 解决方案 问题描述 RuntimeError FlashAttention is only su
  • torch.cuda.is_available()

    可能问题1 cuda 与 torch 版本不对应 可能问题2 安装的torch是cpu版本 或者无cuda版本 可能问题3 torch的关联包未安装 解决方案 使用conda重新安装 conda install pytorch torchv
  • Fisco Bcos 答疑

    问 测试8的结果 集群中有4个节点 其中宕机3个 发起一笔交易 交易失败 然后启动宕机的3个节点 还是交易失败 但如果有一笔新的交易执行 会激活上一笔交易 交易失败的那一笔 最后失败的那一笔会交易成功 这种情况下的交易原理是怎样的 答 不存
  • 图的遍历(深度优先遍历,DFS)

    1 概念 图的遍历操作是从图中某一顶点出发 对图中所有顶点访问一次且仅访问一次 1 在图中 遍历的起始顶点是编号最小的顶点 2 某个起点到达不了所有顶点 则多次调用访问所有顶点 3 为避免遍历因回路而陷入死循环 附设置访问标志数组visit
  • SharedPreferences自定义XML文件保存位置

    声明 本篇文章的相关技术来自于 反射机制修改SharedPreferences存储路径 作者 Harlan9001 基于 实用的SharedPreferences工具类 前言 因为之前的文件是保存在项目目录下的 所以只要软件卸载了 本地的X
  • JAVA 中String 转JSONObject并取值

    今日在做Springboot时把请求放在后端进行 请求返回的结果的字符串需转化为JSON格式才能在后端进行交互 转换时遇到没有的问题 找寻后发现应该导入相关依赖包才能使用JSONObject import net sf json JSONO
  • Android_推送技术研究

    前言 最近研究Android推送的实现 研究了两天一夜 有了一点收获 写下来既为了分享 也为了吐槽 需要说明的是有些东西偏底层硬件和通信行业 我对这些一窍不通 只能说说自己的理解 为什么要研究Android推送技术 主要还是毕业设计要做一个
  • docker的数据卷、docker数据持久化

    目录 前言 docker数据持久化的2种方式 数据卷 bind mount 即 v参数 匿名数据卷 docker manager volume v参数和匿名卷的区别 docker volume 命令的使用 数据卷容器 孤儿volume mo
  • Linux操作系统Fedora命令界面与图形界面间切换

    Linux操作系统Fedora命令界面与图形界面间切换 听语音 浏览 5986 更新 2014 12 11 15 43 标签 linux 1 2 3 4 5 6 7 分步阅读
  • AI在玩一种很新的艺术,700万网友在线围观,ControlNet又立功了

    图片来源 由无界AI生成 文章来源 公众号量子位 QbitAI AI又在玩一种很新的艺术 一组 在离谱与合理的边缘反复试探 的图席卷各大平台 最火的一条 已有近700万查看16 8万点赞 到处有人在求教程 除了棋盘样式 还有一种螺旋样式的也
  • 定时器&pwm

    定时器TIM STM32F1 系列中 除了互联型的产品 共有 8 个定时器 分为基本定时器 通用定时器和高级定时器 基本定时器 TIM6 和 TIM7 是一个 16 位的只能向上计数的定时器 只能定时 没有外部 IO 通用定时器 TIM2
  • 腾讯mini项目-【指标监控服务重构】2023-07-30

    今日已办 调研 CPU Memory Cadivisor adivisor gt Prometheus gt Grafana SigNoz Web google cadvisor Analyzes resource usage and pe
  • Java字符串转换成字符数组

    方法1 package com oracle import java util Scanner public class Test param args public static void main String args TODO Au
  • VMWARE 占用硬盘空间越来越大的解决方法

    1 问题现象 为了开发android驱动 我使用vmware虚拟机运行UBUNTU12 04 硬盘分区有150G 分配了130g给虚拟机 还剩下不到20G的空间作为预留 本来想着130G的空间应该足够跑ubuntu的 但当我编译过几次and
  • 3D游戏编程——与游戏世界交互

    HW5 1 编写一个简单的鼠标打飞碟 Hit UFO 游戏 游戏内容要求 游戏有 n 个 round 每个 round 都包括10 次 trial 每个 trial 的飞碟的色彩 大小 发射位置 速度 角度 同时出现的个数都可能不同 它们由