简单打飞碟游戏

原创 2016年05月30日 15:36:03

一、鼠标点击小游戏

        在写简单飞碟游戏之前,先写一个鼠标点击的小游戏热热身:游戏场景中会随机出现小圆圈,鼠标点击后,圆圈3秒后自动消失。

     (1).  首先,创建Terrain, 并标记为Finish;创建Cylinder并设置其大小,将其拉到Assert/Resources/Prefabs下,再在Prfabs下创建meterial并设置颜色,将meterial拖到Cylinder中,删除层次块中的Cylinder。

     (2).  编写代码。

          ① 编写简单工厂类。单例模式,并且有两个list, 一个存放未被使用的圆盘,一个存放被使用的圆盘,静态变量aid用来初始化

          需要的更多的圆盘。

         

          工厂核心函数为placeAttackMark(Vector3 position),当鼠标点击时,将圆盘移动到点击位置,然后添加disappear组件,让圆

          盘自动消失。

         

          ② 编写disappear类。

          当两秒过后,将挂载了本组件的物体添加到unused列表中,并从used列表删除;将此物体移动到视觉外的位置并删除其挂载

          的disappear组件,防止其一直执行组件中的函数。

         

          ③ 编写Attack类。

          检测到用户的鼠标点击后,获取点击在世界坐标中的位置然后将圆盘移动到该位置,2秒后自动消失。其中,要将Terrian的

          layer改为Water。LayerMask layer = 1 <<LayerMask.NameToLayer("Water");的意思就是射线发射时只检测在Water层中物

          体,只与water层中的物体碰撞。

          

     (3). 将上述类放在Attack.cs文件中并挂载到主摄像机上。注意此时主摄像机有一个可以设置的变量Aid,将预设中的Cylinder

           拖到此处即可。运行,尽情享受吧。

二、简单飞碟游戏

        (1). 创建Terrian;创建Cylinder并设置其大小(10,0.1, 10),将其拉到Assert/Resources/Prefabs下,设置标签为Finish, 往后的代码需要用到这个标签,删除层次块中的Cylinder。调整摄像机(0, 175, 0)、Terrain(0, 15, 0),大小为(29, 1, 30)。

      (2). 编写BaseCode.cs。

      其命名空间Mygame中包含Factory类工厂,工厂能控制飞碟的移动,让飞碟消失,即回收飞碟;包含disappear组件,飞碟加载这个组件后自动消失;包含autodisappear组件,当飞碟到达某位置后自动消失,位置可自由设置。

      ① Factory类。

      变量的用途,根据变量名即可知道;简单的获取实例的函数。

     

     

      通过添加组件控制飞盘的消失:

     

      接下来是工厂的核心类:ApplyUFO(int)。当未使用的飞盘队列还储存有飞盘时,取出来,根据游戏的关卡,给飞盘不同的属

      性和动作。每个飞盘都需要AutoDisappear组件和Rigibody组件。

     

      第一关:速度较小,黄色的飞盘,向下抛。

     

      第二关:速度较大,蓝色,飞盘抛出方向随机。

     

      第三关:速度大而且随机,抛出位置有两个,抛出方向随机,黑色。

     

      ② Disappear类。

      对两个list进行适当操作,去除要消失的飞盘的相关组件。

     

      ③ AutoDisappear类。

      同Disappear类似,但加上消失的条件。

     

     (3). 编写GenGameObject.cs

     用于生成n个飞碟并放在unusedlist里面,以供使用。

     注意当代码挂载到相机上后,要将Prefabs中的飞盘挂载到相机的GenGameObject组件的UFO上,这样才能Instantiate。同时记得设置N的大小,即每次存到队列中的飞盘个数。

    

     (4). 编写UserInterface.cs类

     在界面布置相关按钮,并检测鼠标点击,当鼠标点击到飞盘时,飞盘消失,分数增加;

     并控制一定时间间隔后才能抛出一个飞盘。

    

     点击时用射线检测,射线从摄像机发射,射到鼠标点击的屏幕位置在3d中的坐标,碰撞到物体的具体信息存储在hit中,并检测碰撞到的是不是飞盘,是的话,添加相关动作。此处用到上面的Finish标签。

    

      这样,简单飞碟游戏就写完了。刚开始游戏是注意选择关卡。这是最初是的飞碟游戏版本,虽然很low但刚开始时能做出来还是很开心的。下面附有代码:

    

     负责任链接








版权声明:本文为博主原创文章,未经博主允许不得转载。

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

C++编程之简单打飞碟游戏

  • 2009年02月11日 12:14
  • 122KB
  • 下载

Unity3D作业六项目一——优化打飞碟游戏

这次作业,主要使用了单实例的工厂类,从而可以让各个类之间的访问通过Singleton来进行访问。 其次,这次的优化在于将Rule类分开来,把游戏的分数,胜利条件放在Rule类中,从而便于日后管理 ...

俄罗斯方块和飞碟游戏

  • 2013年01月03日 18:03
  • 26KB
  • 下载

一个飞碟游戏源码

  • 2012年07月22日 11:28
  • 553KB
  • 下载

飞碟游戏-序列化

一、序列化         什么是序列化呢?序列化就是把一个内存对象变为与地址无关的可传输的数据格式,通常是文本格式;反序列化反之。更通俗一点说,就是把游戏运行时保存在内存中的对象或数据输出为文本,...
  • pnxldzw
  • pnxldzw
  • 2016年05月30日 13:51
  • 214

XNA 3D游戏,弹打飞碟源码

  • 2008年08月28日 14:29
  • 4.69MB
  • 下载

Unity3D学习笔记(5)-打飞碟游戏

游戏简介    这是一个简单的打飞碟游戏,总共有3个回合,每个回合都会出现N个颜色不同的飞碟,其中击中黄色飞碟得1分,击中红色飞碟得2分,击中黑色飞碟得四分, 而且这个游戏是没有结束的,这三个回合...
  • x2_yt
  • x2_yt
  • 2017年03月27日 11:01
  • 474

大战飞碟flash游戏的flash+swf+html文件

  • 2017年07月17日 15:26
  • 43.92MB
  • 下载

Unity3D学习:射击小游戏——飞碟世界

飞碟小游戏
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:简单打飞碟游戏
举报原因:
原因补充:

(最多只允许输入30个字)