游戏内容要求:
按 adapter模式 设计图修改飞碟游戏
使它同时支持物理运动与运动学(变换)运动
跟之前的简单打飞碟相比,这次的多了个Adapter类和plane,plane是用来体现飞碟的物理运动的。
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 initialization
float 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;
else
randx = -1.0f;
if (randy >0)
randy = 1.0f;
else
randy = -1.0f;
}
// Update is called once per frame
void 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;
using Adapter;
namespace SimpleFactory
{
#region 产品
public interface UFO
{
GameObject Version(int round);
}
public class UFO1 : UFO
{
float x = Random.Range(0.0f, 5.0f);
public virtual GameObject 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<PickupObject>();
//UFO1.AddComponent<Rigidbody>();
move1 test = UFO1.AddComponent<move1>();
test.speedX *= (float)round;
test.speedY *= (float)round;
test.speedZ = 0.0f ;
return UFO1;
}
}
public class UFO2 : UFO
{
float x = Random.Range(0.0f, 5.0f);
public virtual GameObject 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<PickupObject>();
//UFO1.AddComponent<Rigidbody>();
move1 test = UFO1.AddComponent<move1>();
test.speedX *= (float)round;
test.speedY *= (float)round;
test.speedZ = 0.0f;
return UFO1;
}
public virtual void Add_Component_Rigidbody(GameObject ufo)
{
ufo.AddComponent<Rigidbody>();
}
}
public class UFO3 : UFO
{
float x = Random.Range(0.0f, 5.0f);
public virtual GameObject 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<PickupObject>();
//UFO1.AddComponent<Rigidbody>();
move1 test = UFO1.AddComponent<move1>();
test.speedX *= (float)round;
test.speedY *= (float)round;
test.speedZ = 0.0f;
return UFO1;
}
}
public class UFO4 : UFO
{
float x = Random.Range(0.0f, 5.0f);
public virtual GameObject 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<PickupObject>();
//UFO1.AddComponent<Rigidbody>();
move1 test = UFO1.AddComponent<move1>();
test.speedX *= (float)round;
test.speedY *= (float)round;
test.speedZ = 0.0f;
return UFO1;
}
}
public class UFO5 : UFO
{
float x = Random.Range(0.0f, 5.0f);
public virtual GameObject 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<PickupObject>();
//UFO1.AddComponent<Rigidbody>();
move1 test = UFO1.AddComponent<move1>();
test.speedX *= (float)round;
test.speedY *= (float)round;
test.speedZ = 0.0f;
return UFO1;
}
}
#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 frame
void 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 mousepoint
Camera ca;
if (cam != null ) ca = cam.GetComponent<Camera> ();
else ca = Camera.main;
Ray ray = ca.ScreenPointToRay(Input.mousePosition);
//Return the ray's hits
RaycastHit[] hits = Physics.RaycastAll (ray);
foreach (RaycastHit hit in hits) {
print (hit.transform.gameObject.name);
if (hit.collider.gameObject.tag.Contains("Finish")) {
//plane tag
Debug.Log ("hit " + hit.collider.gameObject.name +"!" );
}
Destroy (hit.transform.gameObject);
}
}
}
}
Adater类():
using UnityEngine;
using System.Collections;
using SimpleFactory;
namespace Adapter
{
public class adapter
{
public void Add_Component_Rigidbody(SimpleFactory.UFO ufo,int i)
{
ufo.Version(i).AddComponent<Rigidbody>();
}
}
}
成品图:
文章浏览阅读392次。参考文章:http://blog.ncmem.com/wordpress/2023/09/14/webupload%e7%bb%84%e4%bb%b6%e5%ae%9e%e7%8e%b0%e6%96%87%e4%bb%b6%e4%b8%8a%e4%bc%a0%e5%8a%9f%e8%83%bd%e5%92%8c%e4%b8%8b%e8%bd%bd%e5%8a%9f%e8%83%bd/systemConfig.properties文件。java后端downloadServlet代码。_webuploader 0.1.5
文章浏览阅读782次,点赞18次,收藏9次。在安全监控领域,人员摔倒检测算法可以应用于工厂、工地等场所,实时监控工人的安全状况。一旦发生摔倒等意外事件,系统可以迅速发出警报,提醒管理人员及时采取救援措施,保障工人的生命安全。
文章浏览阅读462次。1.必须导入系统的头文件2.//MD5加密 为字符串加密-(void)md5{//1.需要加密的内容NSString str = @"我的iOS老师是最帅";//2.将数据转换为data类型 因为系统提供的md5加密的函数为C语言函数,所以需要将OC的字符串转换成C语言的字符串const char sourceData = [str UTF8String];//3.C语言的char类型的数组,..._md5_digest_length
文章浏览阅读309次。java练习题-计算器问题:编写Java程序模拟简单的计算器。定义名为Number的类其中有两个整型数据成员n1和n2应声明为私有。编写构造方法赋予n1和n2初始值再为该类定义加addition()、减substation()、乘multiplication()、除division()等公有实例方法分别对两个成员变量执行加、减、乘、除的运算。在main方法中创建Number类的对象调用各个方法并显示计算结果_java程序模拟简单计算器定义名为number
文章浏览阅读203次。在商场内,LED显示屏主要应用于投放商家提供的广告,如商铺展示、商品展示、餐饮食品展示、服饰展示、化妆品展示等。超市LED显示屏主要用于超市播放广告促销等信息,显示文字信息方面,主要包括室内LED显示屏、LED透明屏、LED圆柱屏以及户外大屏幕LED显示屏等类型。常见的商场led大屏都有哪些?以上就是小编为大家做的总结了,相信大家看了之后都有了一定的了解,如果有这方面的需求,可以直接咨询迈普光彩的技术人员,都会为大家一一解答的。超市主可使用LED显示屏发布一些日常宣传信息,如申请会员、折扣、打折等。
文章浏览阅读619次,点赞21次,收藏2次。纯CSS实现,赛博朋克故障风格动画效果
文章浏览阅读2.7k次。1.执行./configure时报错checking for a BSD-compatible install... /usr/bin/install -cchecking whether build environment is sane... yeschecking for a thread-safe mkdir -p... /usr/bin/mkdir -pchecking for gawk... gawkchecking whether make sets $(MAKE)... yesc_configure: error: in `/bigdata/apps/doris-master/thirdparty/src/unixodbc-2.3
文章浏览阅读1.1w次,点赞16次,收藏153次。无论从什么角度来说,圆锥曲线都非常适合动态演示,尤其是其中优美的几何关系,更能在动态变化中得到淋漓尽致的表现。_python绘制动态曲线
文章浏览阅读3.4k次,点赞2次,收藏12次。全国景区数据汇总整理了全国31个省份及直辖市的1A-5A的景区信息,涵盖了景区名称、省份、景区级别、地址、经纬度、简介等字段,为相关研究助力! _全国旅游景点数据库
文章浏览阅读475次。今天是南大软院大神养成计划实施的第十天。今天主要学习了“DOM事件探秘”。首先说说第一章“事件流”,那什么是事件流呢?事件流就是描述描述从页面中接受事件的顺序,在浏览器中,IE和Netscape提出了相反的慨念,IE提出的是事件冒泡流,就是我们现在常用的事件流,Netscape提出的事件捕获流。首先说说事件冒泡流,事件冒泡流就是即事件最开始由最具体的无素(文档中嵌套层次最深的那个节点)接收,然_大神计划数据
文章浏览阅读5.5k次。偶然遇到一个情况,A服务器和B服务器。A服务器能够Telnet B 8020端口,但B服务器通过netstat命令却查询不到8020端口。其原因是:Docker 所占用的端口,没有通过netstat查出来。(这里为什么没查出来,还不知道)。A服务器Telnet B,能够ConectionB服务器,netstat未查询到端口占用使用docker命令查询映射端口情况,发现8020端口..._linux 端口可以telnet通但是netstat -npl看不到
文章浏览阅读1.6w次,点赞7次,收藏107次。开发环境:Jdk7(8)+Tomcat7(8)+Mysql+IntelliJ IDEA(Eclipse)数据库:MySQL技术:Java+Servlet+Jquery+JavaScript+Ajax+JSP+Bootstrap适用于:课程设计,毕业设计,学习等等系统介绍:本系统是采用Java Web技术的B-S架构的网站,用到的技术有Java EE 、CSS、JavaScript、Ajax。为了使用的效果以及开发的简便,在前端使用了CSS的Bootstrap及其UI组件框架,JS的Jque_web音乐播放器数据流图