unity3d 飞碟游戏
编写一个简单的鼠标打飞碟(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 飞碟游戏相关推荐
- Unity3D 飞碟游戏改进版
飞碟游戏改进 这次作业在上一次打飞碟游戏的基础上增加了adapter设计模式,用来统一物理运动和运动学动作管理器的接口,使得游戏可以动态改变飞碟的行为,同时支持物理运动和运动学变换,具有更高的可扩展性 ...
- unity3d开发鼠标打飞碟游戏(Hit UFO)
这次我们用Unity3d开发一个简单的打飞碟游戏 游戏简介 游戏有3个回合,每个回合会发射n中颜色的飞碟,击中飞碟会得到相应的分数,其中,击中黄色飞碟得1分,击中蓝色飞碟得2分,红色飞碟4分,击不中不 ...
- 【Unity3d学习】使用物理引擎——打飞碟游戏的物理引擎改进与射箭游戏设计
文章目录 写在前面 HitUFO的物理引擎改进版本 物理引擎的改进版本思路与实现 PhysicsAction PhysicsManager 新接口类IActionManager 动作管理器基类的变化 ...
- Unity3D学习:飞碟游戏进化版
上一个做的飞碟游戏虽然是功能也齐全,但是我感觉架构不是很好有点紊乱,不利于后期维护以及改进,所以我按照一个完整的架构重新做了一次,思路更清晰,而且还添加了更多的功能.这次的飞碟游戏是两个关卡,50分上 ...
- unity3D游戏-打飞碟游戏改进版
打飞碟(Hit UFO)游戏改进版 内容要求 按 adapter模式 设计图修改飞碟游戏 使它同时支持物理运动与运动学(变换)运动 适配器模式 适配器模式将某个类的接口转换成另一个接口表示,目的是兼容 ...
- Unity3d——打飞碟游戏(终极版)
前段时间比较忙,囫囵吞枣学了个大概,作业写的也很烂,趁最近有空整理一下,认真写一次打飞碟游戏(主要是总结一下导演场记动作管理这些面向对象设计) 放个UML图 1.SSDirection,导演对象负责 ...
- android unity hook,[原创]Unity3d安卓游戏DLL动态调式与HOOK基础
[原创]Unity3d安卓游戏DLL动态调式与HOOK基础 2016-4-4 02:40 8207 [原创]Unity3d安卓游戏DLL动态调式与HOOK基础 2016-4-4 02:40 8207 ...
- Unity3D 入门 游戏开发 Unity3D portal game development
Unity3D 入门 游戏开发 Unity3D portal game development 作者:韩梦飞沙 Author:han_meng_fei_sha 邮箱:313134555@qq.com ...
- Unity3d查找游戏对象
Unity3D查找游戏对象的方法分为三类:GameObject查找.transform查找.Resources查找 一.GameObject查找 (1)GameObject.Find 参数为名字或者路 ...
最新文章
- 服务器空闲搭建什么网站,空闲的云服务器可以干什么
- webflux 对url参数的接收处理
- for循环下标 shell_如果再写for循环,我就锤自己
- 最速下降法和牛顿方法的Python实现和MATLAB实现
- 一步一步写算法(之哈夫曼树 下)
- 华为NP课程笔记22-防火墙
- 诺基亚n8系统更新服务器模式,新年新版本 诺基亚N8最新固件PR1.1亮相
- 中国石油大学《测井解释与生产测井》第二阶段在线作业
- JavaScript基础知识总结(必看篇)
- 多源多目标统计信息融合 目标跟踪 信息融合 贝叶斯滤波总结
- Maven:repositories、distributionManagement、pluginRepositories中repository的区别(轻松搞明白)
- pytest执行报错AttributeError: module ‘allure‘ has no attribute ‘severity_level‘
- MMD布料解算【新手小白】
- html absolute溢出,position:absolute用法(隐藏溢出部分)
- IDEA怎样自定义 Touch Bar
- 网络爬虫的“盗亦有道”
- Android 线程4件套 MessageQueue Message Looper Handler之MessageQueue
- 2022-2028全球与中国定时器市场现状及未来发展趋势
- git及gitlab的安装和使用
- 英语----非谓语动词done