Unity3D——Hit UFO

14人阅读 评论(0) 收藏 举报
分类:

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

  • 游戏内容要求:
    1. 游戏有 n 个 round,每个 round 都包括10 次 trial;
    2. 每个 trial 的飞碟的色彩、大小、发射位置、速度、角度、同时出现的个数都可能不同。它们由该 round 的 ruler 控制;
    3. 每个 trial 的飞碟有随机性,总体难度随 round 上升;
    4. 鼠标点中得分,得分规则按色彩、大小、速度不同计算,规则可自由设定。
  • 游戏的要求:
    • 使用带缓存的工厂模式管理不同飞碟的生产与回收,该工厂必须是场景单实例的!具体实现见参考资源 Singleton 模板类
    • 尽可能使用前面 MVC 结构实现人机交互与游戏模型分离

我的游戏

游戏视频链接:密码:1111

游戏规则:

  1. 点击start按钮开始游戏,鼠标点中飞碟得分
  2. 每个飞碟的色彩、发射位置随机,由round的rules规定
  3. 每一轮飞碟飞行速度逐渐增加(难度增加),击打所对应的分值也相应增加
  4. 每一轮包括10个飞碟,飞碟全部发射完毕,无条件进入下一轮
  5. 点击restart按钮清空分数和关卡记录,从第一关开始

游戏截图:
这里写图片描述

这里写图片描述

这里写图片描述
实现思路:
这里写图片描述
按照课件的UML图进行游戏设计。

  • 制作飞碟的预制,我用的是cylinder,因此如果将localscale和rule关联,就可能出现不像飞盘(飞碟)的情况。于是手动指定scale,分别是3, 0.3, 2
  • 利用单例模式进行类间通信,如
        Singleton<DiskFactory>.Instance.FreeDisk(disk);
        factory = Singleton<DiskFactory>.Instance;
        recorder = Singleton<ScoreRecorder>.Instance;
  • 分别实现RoundController、DiskFactory、ScoreRecorder,挂在主摄像机上即可
  • 交互使用UserGUI,同上次作业一样

*具体实现代码有参考Unity学习笔记(九)——简单打飞碟游戏 & 改进

一些bug或困难记录

1.是OnGUI而不是onGUI。这个在score显示的时候卡了很久,查了一下GUI不显示Texture的方法,一一实践发现并不能够解决。用debug输出信息发现居然没有调用这个函数,仔细一看打错函数名了…(虽然是我粗心写错但还是附上一个链接方便以后查看:关于unity中GUITEXT出现不显示问题

2.关于飞盘的样式:一开始的确想让它们每一关长得不一样,但是考虑到飞盘大概都长得差不多,干脆统一定制(只针对形状),否则看起来就不像飞盘了。

3.关于起止位置:最开始是想让飞盘往游戏者这边飞,而不是像查到的一些实现一样往远处走。但是实际操作了一下存在问题,一个是如果定义vector3.z太小,会在界面上出现【等待飞出的飞盘】,毕竟随机也是要有指定位置的。但如果定义得太大,远是远了,可以达到“看不见”的效果,但是考虑到实际情况,模拟真正的飞盘飞出,重力加速度会让飞盘无法坚持,在还未来到游戏者面前就已经掉落。

4.关于public和private的选择::脚本中定义的public变量在 inspection中是可以手动修改的,一开始没想那么多全部都设成public(一个很坏的习惯),然后就出现round随意改、score随意改等等不符合游戏规则的“bug”于是决定只把每轮的飞碟数设成public,这个可以让玩家修改,一轮要扔出多少个飞碟。

5.关于游戏规则:最初的想法是设定一个阈值,每一关要大于某个值才能进入到下一关,否则游戏失败游戏结束。但是遇到了一点问题,比如:

 if (GUI.Button(new Rect(width + 110, height, 50, 30), "start"){
 this.nextRound();
}

我的想法是嵌套if

if(score>x)
this.nextRound();
else {
GUI.TextArea(new Rect(width + 300, height + 200, 100, 30), "Game Over!");
}

但是不知道为什么,它不会进入到else语句(用debug测试过了)
时间比较紧,这个问题没有得到解决….以后有时间再弄吧


有用的链接:

Unity知识一:简单的点击事件
Unity3d与设计模式(三)工厂模式
https://www.cnblogs.com/flyFreeZn/p/4026026.html

查看评论

Unity3D学习(5)之工厂回收利用的3D版飞碟游戏

这一次我们来做的任务是3D版鼠标点击鼠标的游戏。我们先来看一下游戏需求。 案例研究:“鼠标打飞碟”游戏设计 游戏需求:     1. 分多个 round , 飞碟数量每个 round 都是 n ...
  • zzj051319
  • zzj051319
  • 2017-03-26 14:22:08
  • 901

unity打飞碟

unity hw4 1、编写一个简单的鼠标打飞碟(Hit UFO)游戏 游戏的演示视频地址:http://v.youku.com/v_show/id_XMzU0Mjg0NDg3Mg==.htm...
  • DDghsot
  • DDghsot
  • 2018-04-16 18:55:22
  • 42

3D游戏编程4--打飞碟

编写一个简单的鼠标打飞碟(Hit UFO)游戏 游戏内容要求 游戏的要求 游戏实现 文件结构 c#文件 DiskFactory DiskFactoryController FirstControl...
  • yaoxh6
  • yaoxh6
  • 2018-04-13 20:53:26
  • 117

简单打飞碟游戏

一、鼠标点击小游戏         在写简单飞碟游戏之前,先写一个鼠标点击的小游戏热热身:游戏场景中会随机出现小圆圈,鼠标点击后,圆圈3秒后自动消失。      (1).  首先,创建Terrai...
  • pnxldzw
  • pnxldzw
  • 2016-05-30 15:36:03
  • 808

Unity 3D官方教程——2D UFO学习记录

保持更新
  • WOCAISHIAIGE
  • WOCAISHIAIGE
  • 2017-03-29 13:55:28
  • 697

飞碟

问题描述 一个众所周知的事实,在每一慧星后面是一个不明飞行物UFO。 这些不明飞行物时常来收集来自在地球上忠诚的支持者。 不幸地,他们的空间在每次旅行只能带上一群支持者。 他们为每个慧星起了一个名字...
  • WP2017U01
  • WP2017U01
  • 2017-05-09 23:00:36
  • 190

Unity3d Note5(鼠标打飞碟(Hit UFO)游戏)

1.作业要求 2.具体设计 (1).制备预制体作为飞碟 (2).了解一下Singleton模板类 (3).了解一下工厂模式 (3).设计具体要实现的类 3.程序代码 成果视频 ...
  • m0_37782473
  • m0_37782473
  • 2018-04-17 22:26:11
  • 2

unity3d开发鼠标打飞碟游戏(Hit UFO)

这次我们用Unity3d开发一个简单的打飞碟游戏 游戏简介 游戏有3个回合,每个回合会发射n中颜色的飞碟,击中飞碟会得到相应的分数,其中,击中黄色飞碟得1分,击中蓝色飞碟得2分,红色飞碟4分,...
  • qq_36297981
  • qq_36297981
  • 2018-04-17 21:21:35
  • 8

j简版UFO报表工具

  • 2012年08月16日 18:31
  • 406KB
  • 下载

Unity3D说明文档翻译-Physics Manager

Physics Manager 物理学管理器 The Physics Manager lets you provide global settings for 3D physics (menu: ...
  • zqzhang1988
  • zqzhang1988
  • 2017-05-14 02:10:12
  • 432
    个人资料
    持之以恒
    等级:
    访问量: 4295
    积分: 662
    排名: 7万+