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

动作管理器统一接口

public interface SceneController
{void load();void game(int Round);int Choose(float[] probe);
}

飞碟随机运动

using UnityEngine;
using System.Collections;public class move1 : MonoBehaviour {public float speedX = 5.0F;public float speedY = 5.0F;public float speedZ = 5.0F;// Use this for initializationfloat rand1 = Random.Range(-1.0f, 1.0f);float rand2 = Random.Range(-1.0f, 1.0f);float rand3 = Random.Range(-1.0f, 1.0f);float randx;float randy;void Start () {randx = Random.Range(-1.0f, 1.0f);randy = Random.Range(-1.0f, 1.0f);//Debug.Log(randx);//Debug.Log(randy);if (randx>0)randx = 1.0f;elserandx = -1.0f;if (randy >0)randy = 1.0f;elserandy = -1.0f;}// Update is called once per framevoid Update () {float translationY = 1 * speedY*rand1*randx;float translationX = 1 * speedX*rand2*randy;float translationZ = 1 * speedZ;translationY *= Time.deltaTime;translationX *= Time.deltaTime;//transform.Translate(0, translationY, 0);//transform.Translate(translationX, 0, 0);transform.Translate(translationX, translationY, translationZ);}}

工厂

using UnityEngine;namespace SimpleFactory
{#region 产品public interface UFO{void Version(int round);}public class UFO1 : UFO{float x = Random.Range(-5.0f, 5.0f);public virtual void Version(int round){GameObject UFO1;Vector3 UFO1Pos = new Vector3(x, 0, 0);UFO1 = Object.Instantiate(Resources.Load("UFO1", typeof(GameObject)), UFO1Pos, Quaternion.identity) as GameObject;UFO1.name = "UFO1";UFO1.AddComponent<PickupMultiObjects>();move1 test = UFO1.AddComponent<move1>();test.speedX *=  (float)round;test.speedY *=   (float)round;test.speedZ = 0.0f ;}}public class UFO2 : UFO{float x = Random.Range(-5.0f, 5.0f);public virtual void Version(int round){GameObject UFO1;Vector3 UFO1Pos = new Vector3(x, 0, 0);UFO1 = Object.Instantiate(Resources.Load("UFO2", typeof(GameObject)), UFO1Pos, Quaternion.identity) as GameObject;UFO1.name = "UFO2";UFO1.AddComponent<PickupMultiObjects>();move1 test = UFO1.AddComponent<move1>();test.speedX *= (float)round;test.speedY *= (float)round;test.speedZ = 0.0f;Debug.Log("2222");}}public class UFO3 : UFO{float x = Random.Range(-5.0f, 5.0f);public virtual void Version(int round){GameObject UFO1;Vector3 UFO1Pos = new Vector3(x, 0, 0);UFO1 = Object.Instantiate(Resources.Load("UFO3", typeof(GameObject)), UFO1Pos, Quaternion.identity) as GameObject;UFO1.name = "UFO3";UFO1.AddComponent<PickupMultiObjects>();move1 test = UFO1.AddComponent<move1>();test.speedX *= (float)round;test.speedY *=  (float)round;test.speedZ = 0.0f;Debug.Log("333");}}public class UFO4 : UFO{float x = Random.Range(-5.0f, 5.0f);public virtual void Version(int round){GameObject UFO1;Vector3 UFO1Pos = new Vector3(x, 0, 0);UFO1 = Object.Instantiate(Resources.Load("UFO4", typeof(GameObject)), UFO1Pos, Quaternion.identity) as GameObject;UFO1.name = "UFO4";UFO1.AddComponent<PickupMultiObjects>();move1 test = UFO1.AddComponent<move1>();test.speedX *= (float)round;test.speedY *= (float)round;test.speedZ = 0.0f;Debug.Log("4444");}}public class UFO5 : UFO{float x = Random.Range(-5.0f, 5.0f);public virtual void Version(int round){GameObject UFO1;Vector3 UFO1Pos = new Vector3(x, 0, 0);UFO1 = Object.Instantiate(Resources.Load("UFO5", typeof(GameObject)), UFO1Pos, Quaternion.identity) as GameObject;UFO1.name = "UFO5";UFO1.AddComponent<PickupMultiObjects>();move1 test = UFO1.AddComponent<move1>();test.speedX *= (float)round;test.speedY *= (float)round;test.speedZ = 0.0f;Debug.Log("5555");}}#endregion#region 工厂public interface IFactory{UFO Create();}public class UFO1Factory : IFactory{public virtual UFO Create(){return new UFO1();}}public class UFO2Factory : IFactory{public virtual UFO Create(){return new UFO2();}}public class UFO3Factory : IFactory{public virtual UFO Create(){return new UFO3();}}public class UFO4Factory : IFactory{public virtual UFO Create(){return new UFO4();}}public class UFO5Factory : IFactory{public virtual UFO Create(){return new UFO5();}}#endregion
}

场景单实例

using UnityEngine;
using System.Collections;public class Singleton<T> : MonoBehaviour where T : MonoBehaviour
{protected static T instance;public static T Instance{get{if (instance == null){instance = (T)FindObjectOfType(typeof(T));if (instance == null){Debug.LogError("An instance of " + typeof(T) +" is needed in the scene, but there is none.");}}return instance;}}
}

场景单实例的使用很简单,你仅需要将 MonoBehaviour 子类对象挂载任何一个游戏对象上即可。

然后在任意位置使用代码 Singleton <>.Instance 获得该对象。

光标拾取多个物体程序

public class PickupMultiObjects : MonoBehaviour {public GameObject cam;// Update is called once per framevoid Update () {if (Input.GetButtonDown("Fire1")) {Debug.Log ("Fired Pressed");Debug.Log (Input.mousePosition);Vector3 mp = Input.mousePosition; //get Screen Position//create ray, origin is camera, and direction to mousepointCamera ca;if (cam != null ) ca = cam.GetComponent<Camera> (); else ca = Camera.main;Ray ray = ca.ScreenPointToRay(Input.mousePosition);//Return the ray's hitsRaycastHit[] hits = Physics.RaycastAll (ray);foreach (RaycastHit hit in hits) {print (hit.transform.gameObject.name);if (hit.collider.gameObject.tag.Contains("Finish")) { //plane tagDebug.Log ("hit " + hit.collider.gameObject.name +"!" ); }Destroy (hit.transform.gameObject);}}       }
}

成品图:

unity3d 飞碟游戏相关推荐

  1. Unity3D 飞碟游戏改进版

    飞碟游戏改进 这次作业在上一次打飞碟游戏的基础上增加了adapter设计模式,用来统一物理运动和运动学动作管理器的接口,使得游戏可以动态改变飞碟的行为,同时支持物理运动和运动学变换,具有更高的可扩展性 ...

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

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

  3. 【Unity3d学习】使用物理引擎——打飞碟游戏的物理引擎改进与射箭游戏设计

    文章目录 写在前面 HitUFO的物理引擎改进版本 物理引擎的改进版本思路与实现 PhysicsAction PhysicsManager 新接口类IActionManager 动作管理器基类的变化 ...

  4. Unity3D学习:飞碟游戏进化版

    上一个做的飞碟游戏虽然是功能也齐全,但是我感觉架构不是很好有点紊乱,不利于后期维护以及改进,所以我按照一个完整的架构重新做了一次,思路更清晰,而且还添加了更多的功能.这次的飞碟游戏是两个关卡,50分上 ...

  5. unity3D游戏-打飞碟游戏改进版

    打飞碟(Hit UFO)游戏改进版 内容要求 按 adapter模式 设计图修改飞碟游戏 使它同时支持物理运动与运动学(变换)运动 适配器模式 适配器模式将某个类的接口转换成另一个接口表示,目的是兼容 ...

  6. Unity3d——打飞碟游戏(终极版)

    前段时间比较忙,囫囵吞枣学了个大概,作业写的也很烂,趁最近有空整理一下,认真写一次打飞碟游戏(主要是总结一下导演场记动作管理这些面向对象设计) 放个UML图 1.SSDirection,导演对象负责 ...

  7. android unity hook,[原创]Unity3d安卓游戏DLL动态调式与HOOK基础

    [原创]Unity3d安卓游戏DLL动态调式与HOOK基础 2016-4-4 02:40 8207 [原创]Unity3d安卓游戏DLL动态调式与HOOK基础 2016-4-4 02:40 8207 ...

  8. Unity3D 入门 游戏开发 Unity3D portal game development

    Unity3D 入门 游戏开发 Unity3D portal game development 作者:韩梦飞沙 Author:han_meng_fei_sha 邮箱:313134555@qq.com ...

  9. Unity3d查找游戏对象

    Unity3D查找游戏对象的方法分为三类:GameObject查找.transform查找.Resources查找 一.GameObject查找 (1)GameObject.Find 参数为名字或者路 ...

最新文章

  1. 服务器空闲搭建什么网站,空闲的云服务器可以干什么
  2. webflux 对url参数的接收处理
  3. for循环下标 shell_如果再写for循环,我就锤自己
  4. 最速下降法和牛顿方法的Python实现和MATLAB实现
  5. 一步一步写算法(之哈夫曼树 下)
  6. 华为NP课程笔记22-防火墙
  7. 诺基亚n8系统更新服务器模式,新年新版本 诺基亚N8最新固件PR1.1亮相
  8. 中国石油大学《测井解释与生产测井》第二阶段在线作业
  9. JavaScript基础知识总结(必看篇)
  10. 多源多目标统计信息融合 目标跟踪 信息融合 贝叶斯滤波总结
  11. Maven:repositories、distributionManagement、pluginRepositories中repository的区别(轻松搞明白)
  12. pytest执行报错AttributeError: module ‘allure‘ has no attribute ‘severity_level‘
  13. MMD布料解算【新手小白】
  14. html absolute溢出,position:absolute用法(隐藏溢出部分)
  15. IDEA怎样自定义 Touch Bar
  16. 网络爬虫的“盗亦有道”
  17. Android 线程4件套 MessageQueue Message Looper Handler之MessageQueue
  18. 2022-2028全球与中国定时器市场现状及未来发展趋势
  19. git及gitlab的安装和使用
  20. 英语----非谓语动词done

热门文章

  1. 月薪 8k 和月薪 38k 的程序员差距在哪里?
  2. Windows的一键安检脚本
  3. 中国电视覆盖及收视状况调查结果出炉
  4. 司马相如 和 卓文君
  5. WINDOWS 自带解压缩命令
  6. ACM为啥子这么难?
  7. Linux中如何打开80端口
  8. 纳米压痕仪应用及制样要求
  9. 使用python对url编码解码 (转)
  10. 1017 A除以B(C语言)