校园火灾Focue-2---》洗手间的一套-》电梯

上节讲到警铃:

 

当走到12 继续往下走,走到洗手间:

走到洗手间,提示UI,第9个

 

 显示第9  的panel,然后显示到第14步,水龙头位置:

等于14的时候,创建新方法:

 

靠近水龙头的时候,

 

 1.打开panel,

开水龙,拿毛巾 当点击一个物体的时候,让它高亮,就哟啊修改材质吗,因为以后也会用到,就创建一个新的脚本,专门做哟啊点击的物体的高亮显示的管理器

控制高亮-》控制物体材质球,为了外面的好调用,把这个脚本写成一个单列,不需要挂在任何物体上,

当调用单列的时候,就是调用一个对象:

单列创建一个对象,不声明

 

一个构造函数里,一个属性,

 

 1.创建一个打开高亮的方法

2.,创建一个关闭高亮的方法

 

控制物体是否高亮的:

 

是要让物体高亮,所以给他传一个gameobjet
//如果物体为空,不能设置高亮

 //一个物体可以有多个材质球,所以要找到所以的

 

拿到之后,foreach遍历

 //要先勾上:

,打开后 可以写具体显示什么颜色 的高亮,设置成一个蓝色,

关闭高亮,关掉勾:

 拿到水龙头开关:

拿到水龙头:

初始化水龙头开关:

 

拿到头显,拿到水的动画,水流特效,毛巾,手模型

因为毛巾放手上,和放下的时候  创建毛巾父物体;

毛巾的位置,没有 的时候,毛巾和水接触的颜色  

总的部分

在start()里面初始化:

1水龙头

2.水龙头开关播放的动画,在水龙头身上tap
3.水流的特效:开始的时候水不流水 单独,先关闭。

4.拿到毛巾和手:开始的时候毛巾的父物体,就是毛巾所在 的位置:

5.模型手 毛巾位置

6.手:

7.毛巾颜色:

 

 

 

 靠近水龙头的时候,把9的panel关闭,再把10打开,显示高亮(水龙头的高亮)

把水龙头开关高亮,

在头上添加boxcollider 还有righbodry

 

,打开boxcollider:

 

 点击到水龙头:

 

新方法,处理水龙头的点击事件:

 

把10UIpanel关闭:水龙头高亮关闭:

毛巾的boxcollider打开:

避免再次点击到水龙头,把碰重体关闭

水龙头旋转动画的播放,水的粒子效果播放:

提示拿毛巾,所以毛巾高亮打开:

 下一步点击毛巾:

点击毛巾的一个新方法 :

 

 毛巾被点击后,毛巾的高亮关闭:

毛巾的父物体,拿到手上

所以的获取右手炳

初始化:

 

把毛巾放手上

手模型显示“”

毛巾在手的位置:

把毛巾放水上。怎么检测毛巾与手发生碰撞,粒子也是有碰撞体

 


所以添加一个新的脚本,专门处理物体与粒子效果的碰撞,这个脚本挂在毛巾身上

 

拿到gamemain:

新方法,粒子击中 到时候就调用这个方法:碰到的是谁

 

如果碰撞水柱,并且是它是干毛巾:调用gamemain毛巾沾水的方法:

 

 

 添加一个bool值的属性 存放当前毛巾是否已经沾水了

 新方法:检测毛巾碰水的方法 毛巾

毛巾碰水了 等于true,

改变毛巾颜色

 

 检测头和毛巾的碰撞

再写一个脚本,简单的碰撞,:这个脚本要挂在头上,只要获得父物体就可以了

,先拿到gamemain;

,检测碰撞的方法:

先把这个勾上

检测碰着的是不是毛巾:碰着的是毛巾,毛巾是沾水了的,才固定在头上

 

再添加一个新方法,毛巾固定到头上

,毛巾已经固定头上了

//就不用手了,

//毛巾的父物体就是头了,

//位置就在头上,

 

角度就为零:

到15步;

 

这个方法的总,

 

 位置:

让父物体真的是父物体的值

方便测试开动的位置:10的位置

修改部分 手不见的i情况:

毛巾不能勾上触发

 

毛巾到头上的时候 水关了

 

显示这个

 

***********************************************下午******************

从洗手间出来

 

到16地标的时候 显示17的地标,和11个的UI界面显示

如果抬头 就提示不能抬起头:走到

 

永远低头,从现在开始:写在Update();所以添加一个开关,走到低头地方才低头走

如果为真,就把数组里的2打开,当y的值大于0就是真的

 

再把12打开,并且显示下一步:

21的地标是电梯口的地标:电梯打开的动画:

把22地标显示出来:

把12关闭

 

拿到电梯:

 

打开开电梯门动画的方法:

 

 如果你点击了地标等于22,告诉他电梯里面不能走:显示14界面,走到18地标

 

位置:

结果:

 

到18步:

到19步:前边爆炸:

先找到爆炸的粒子效果:

找到粒子特效:

找到里面的爆炸

得到门的动画:

当iddnegyu19,播放动画

播放动画后,,延迟调用panel远离化学物品:又显示下一地标

 

远离方法:

去测试写 东西是不是正确 从10步开始走

电梯到化学室的效果演示

 

 

*************************************************

 接下来是灭火器的时候了

 到20地标了关掉13panel

24灭火器位置

 

到24地标,关闭15UI;

灭火器高亮,先去获得灭火器:

 

找到单独的灭火器:

 

实例化:

找到拉环

得到拉

 Start()l里面灭火器总的:

 

 

 

 左手 

右手

干粉的粒子效果

火焰动画

 灭火器的父物体,

灭火器的位置

灭火器 的旋转

灭火时候的动画(灭火器上下动)

动画长度

灭火器是否在手上

干面粉是否碰到火

 

 

 灭火器高亮

点击灭火器

 

灭火器事件

 

                                                                                                                                                         先关闭手

 

取消高亮的灭火器:

把拉环隐藏:

 

灭火器boxclooer关闭

 

                                                                                                                                                        拉环的处理新方法:

显示UI方法 

 

 

 

 

 

显示箭头:

用左手拉环,把左手改成红色:

右手碰撞体打开:

 

 检测点击到右手:

 

手的点击:

 

   关闭箭头,两只手的模型关闭:

把灭火器绑定在手柄上:

手的父物体为右手炳

位置

旋转角度(竖着)

显示灭火气:

灭火栓关闭:

按下touchpad键,就调用下边这个方

调用新方法,碰出来干粉

检测灭火器是不是在手上:错误不是  真 就碰干粉

 

检测纸箱,干粉有没有碰着纸箱 碰着挂粒子的脚本(物体有没有碰到粒子)

粒子特效脚本里,有没有碰到干粉并且是不是已经碰着火了

先去gameamin里添加一个bool值 ctrl+r+e 属性

 

 

 

碰着火以后的事情,方法:

 

调用

 

 

让火变得雨来越小

火被扑灭以后的方法:

 

 

 

已经碰着了 播放火焰的动画:    火焰越来越小  

 

 

火被扑灭以后:灭火器放回去;

干粉粒子效果关闭

灭火器的父物体等于

灭火器位置为原来的位置:

 

        显示下一步:

 

   测试灭火的功能:

修改部分

 

             烟灭成功
********************************************

走到25地标了,到大楼梯门口的UI

 

点击16UI的okbutton

 

添加一个关闭OK 的方法

 

 

 UImain里的方法不用了

 

 

 

 

 


喷干粉的脚本调用

 

 

  1 using System.Collections;
  2 using System.Collections.Generic;
  3 using UnityEngine;
  4 
  5 public class GameMain : MonoBehaviour {
  6     public UIMain m_UIMain;
  7     public GameObject m_ClassRoom;
  8     public GameObject m_PassageWay;
  9     public Transform m_PositionMarket;//地标
 10     private int m_nCurTransID;
 11     private int m_nPosCount;
 12     private float m_Height = 1.4f;
 13     private Vector3 m_largeScale = new Vector3(0.8f, 0.8f, 0.8f);
 14     private Vector3 m_normalScale = new Vector3(0.5f, 0.5f, 0.5f);
 15 
 16     private GameObject m_classroomSmoke;//烟雾粒子特效
 17     private GameObject m_waringPanel;//警告
 18     private GameObject[] m_waringPanels;//所有警告Panel
 19     private Material m_brake;//开关的材质球
 20     private GameObject m_classroomLights;
 21     private Light[] m_emergencylamp;
 22 
 23     private GameObject m_watertap;//水龙头开关
 24     private Transform m_head;//头显
 25     private Animation m_waterTapAni;//水龙头打开 动画
 26     private GameObject m_waterEffect;//水流特效
 27     private Transform m_towel;//毛巾
 28     private Transform m_towelParent;//毛巾父物体
 29     private GameObject m_towelHand;//拿着毛巾的手
 30     private Vector3 m_towelPos;
 31     private Quaternion m_towelRot;
 32     private Color m_towelInitColor;//毛巾颜色
 33 
 34     private Transform m_rightHand;
 35     private bool m_bTowelWet;
 36     private bool m_bNeedBend;
 37 
 38     private Animation m_elevator;
 39 
 40     private GameObject m_boomEffect;//爆炸粒子效果
 41     private Animation m_boomDoorBreak;
 42 
 43     private Transform m_extinguisher;//灭火器
 44     private Transform m_fireplug;//拉环
 45     private Transform m_fireRightHand;
 46     private Transform m_fireLeftHand;
 47     private GameObject m_ganfenEffect;
 48     private Animation m_fireAni;
 49     private Transform m_extinguisherParent;
 50     private Vector3 m_extinguisherPos;
 51     private Quaternion m_extinguisherRot;
 52     private Animation m_extinguisherAni;
 53     private float m_fExAniLength;
 54     private bool m_bUseExtinguisher;
 55     private bool m_bTouchedFire;
 56 
 57 
 58 
 59     private Vector3[] m_markPosition = new Vector3[]
 60     {
 61         new Vector3(-4.7f,2.02f,-60f),//0 楼道里
 62         new Vector3(16.2f,0.01f,-3.5f),//1 教室门口
 63         new Vector3(17.2f,0.01f,-2.5f),//2 
 64         new Vector3(18f,0.01f,-1.4f),//3 课桌前
 65         new Vector3(19.4f,0.01f,-2.4f),// 4 
 66         new Vector3(21.9f,0.01f,-3.6f),//5 电闸位置
 67         new Vector3(20f,0.01f,-2.4f),//6 
 68         new Vector3(17.5f,0.01f,-2.5f),// 7
 69         new Vector3(16f,0.01f,-3.5f),//8 前门 
 70         new Vector3(15.5f,0.01f,0f),//9 前后门中间
 71         new Vector3(16f,0.01f,3.9f),//10 后门位置
 72         new Vector3(-3.8f,2.02f,-57.6f),//11 
 73         new Vector3(-4.7f,2.02f,-53f),//12 
 74         new Vector3(-4.7f,2.02f,-47.2f),//13
 75         new Vector3(-6.9f,2.02f,-45.1f),//14
 76         new Vector3(-4.8f,2.02f,-43f),//15
 77         new Vector3(-4.8f,2.02f,-38f),//16
 78         new Vector3(-4.8f,2.02f,-33f),//17
 79         new Vector3(-4.8f,2.02f,-23f),//18
 80         new Vector3(-4.8f,2.02f,-17.5f),//19
 81         new Vector3(-4.8f,2.02f,-11.3f),//20
 82         new Vector3(-5.3f, 2.02f, -29f),         //21 电梯门口
 83         new Vector3(-7.3f, 2.02f, -29f),         //22 电梯内
 84         new Vector3(-4.8f, 2.02f, -6.5f),      //23 
 85         new Vector3(-4.8f, 2.02f, -0.1f),      //24   灭火器处
 86         new Vector3(-4.8f, 2.02f, 3.3f),         //25    走廊尽头
 87         new Vector3(-4.8f, 2.02f, 6.7f),         //26    逃生通道
 88         new Vector3(-9.9f, 0.4f, 6.8f),         //27
 89         new Vector3(-9.6f, 0.4f, 8.3f),   //28
 90         new Vector3(-4.4f, -1.2f, 7.9f),   //29
 91     };
 92     // Use this for initialization
 93     void Start () {//加载
 94 
 95 
 96         //爆炸
 97         Transform allEffect = m_PassageWay.transform.Find("Effects");
 98         m_boomEffect = allEffect.Find("boom").gameObject;
 99         m_boomEffect.SetActive(false);
100         m_boomDoorBreak = m_PassageWay.transform.Find("Model/door break").GetComponent<Animation>();
101 
102         m_elevator = m_PassageWay.transform.Find("Model/elevatorOpen").GetComponent<Animation>();
103 
104         m_rightHand = transform.Find("vr_controller_tank_0_8_MC_R");
105 
106         Transform tap = m_PassageWay.transform.Find("Model/ShuiLongTou");//水龙头
107         m_watertap = tap.Find("GameObject/WaterTap").gameObject;//水龙头开关
108         m_head = transform.Find("head");
109         m_waterTapAni = tap.GetComponent<Animation>();
110         m_waterEffect = m_PassageWay.transform.Find("Effects/water").gameObject;//水流特效
111         m_waterEffect.SetActive(false);
112 
113         m_towel = m_PassageWay.transform.Find("Model/Towel");
114         m_towelParent = m_towel.parent;
115         m_towelPos = m_towel.localPosition;
116         m_towelRot = m_towel.localRotation;
117         m_towelHand = m_towel.Find("shou").gameObject;//
118         m_towelInitColor = m_towel.GetComponent<Renderer>().material.color;
119         
120 
121         m_classroomLights = m_ClassRoom.transform.Find("light").gameObject;
122         m_emergencylamp = new Light[2];
123         for (int i = 0; i < 2; i++)
124         {
125             m_emergencylamp[i] = m_classroomLights.transform.Find("DirectionalLight" + i).GetComponent<Light>();
126         }
127 
128         m_brake = m_ClassRoom.transform.Find("model/Brake").GetComponent<Renderer>().material;
129 
130         m_waringPanel = transform.Find("head/Canvas").gameObject;
131         m_waringPanels = new GameObject[3];
132         //0 火灾突发 1 离开洗手间 2 弯腰提示
133         for (int i = 0; i < m_waringPanels.Length; i++)
134         {
135             m_waringPanels[i] = m_waringPanel.transform.Find("Panel"+i).gameObject;
136             m_waringPanels[i].SetActive(false);
137         }
138         m_classroomSmoke = m_ClassRoom.transform.Find("smoke").gameObject;
139         m_nPosCount = m_markPosition.Length;
140 
141         //灭火器
142         Transform mhq = m_PassageWay.transform.Find("Model/miehuoqi_dh_01");
143         m_extinguisher = mhq.Find("loidao_dong_03");
144         m_fireplug = m_extinguisher.Find("Dummy001/loidao_dong_02");
145         m_fireplug.gameObject.SetActive(false);
146         m_fireRightHand = mhq.Find("body002");//灭火器上方的手
147         m_fireLeftHand = mhq.Find("body");//灭火器下方的手
148         m_fireRightHand.gameObject.SetActive(false);
149         m_fireLeftHand.gameObject.SetActive(false);
150         m_ganfenEffect = m_extinguisher.Find("MieHuoQiSmoke").gameObject;//灭火器喷出的粒子效果
151         m_fireAni = allEffect.Find("fire/Fire_v1 (4)").GetComponent<Animation>();//火焰动画
152         m_ganfenEffect.SetActive(false);//灭火去特效关闭
153         m_extinguisherParent = m_extinguisher.parent;
154         m_extinguisherPos = m_extinguisher.localPosition;
155         m_extinguisherRot = m_extinguisher.localRotation;
156 
157         m_extinguisherAni = mhq.GetComponent<Animation>();//灭火器动画
158         m_fExAniLength = m_extinguisherAni.clip.length;//动画片段长度
159         m_bUseExtinguisher = false;//设置灭火器是否在手上为false
160         m_bTouchedFire = false;//粉末是否触碰到了火为false
161 
162 
163         ShowEnterSystem();
164 
165     }
166     
167     public bool IsTouchedFire
168     {
169         get { return m_bTouchedFire; }
170         set { m_bTouchedFire = value; }
171     }
172     public void ShowEnterSystem()//初始化数据
173     {
174         m_classroomSmoke.SetActive(false);
175         m_towel.parent = m_towelParent;
176 
177         ShowWelcomeEnter();
178     }
179     void ShowWelcomeEnter()//显示欢迎界面
180     {
181         m_UIMain.ShowPanel(17, true);
182     }
183     // Update is called once per frame
184     void Update () {
185         if (m_bNeedBend)
186         {
187             m_waringPanels[2].SetActive((m_head.localPosition.y>0)?true:false);
188         }
189     }
190     public void OnConfirmButtonClicked(string sName)
191     {
192         m_UIMain.UIConfirmBtnClick(sName);
193        
194     }
195     public void OnChoseButtonClicked(string sName)
196     {
197         m_UIMain.UIChoseBtnClick(sName);
198     }
199     public void TransportToClassRoom()//传送到教室
200     {
201         m_ClassRoom.gameObject.SetActive(true);
202         m_PassageWay.gameObject.SetActive(false);
203         m_nCurTransID = 10;//!!!!!!!!!!!!!!!!!
204         TransPort();
205     }
206     public void TransportToPassageWay()//传送到楼道
207     {
208         m_ClassRoom.gameObject.SetActive(false);
209         m_PassageWay.gameObject.SetActive(true);
210         m_nCurTransID = 11;
211         TransPort();
212     }
213     public void TransPort()//传送
214     {
215         if (m_nCurTransID>=m_nPosCount)//ID越界
216         {
217             m_PositionMarket.gameObject.SetActive(false);
218             return;
219         }
220         if (m_nCurTransID!=22)//不是电梯
221         {
222             Vector3 pos = new Vector3(m_markPosition[m_nCurTransID].x,m_markPosition[m_nCurTransID].y+m_Height,m_markPosition[m_nCurTransID].z);
223             transform.position = pos;
224         }
225         m_PositionMarket.gameObject.SetActive(false);
226         if (m_nCurTransID==1)//教室门口
227         {
228             ShowMark(2);
229         }
230         else if (m_nCurTransID==2)
231         {
232             ShowMark(3);
233         }
234         else if (m_nCurTransID==3)
235         {
236             Invoke("ShowFireWaring",3f);
237         }
238         else if (m_nCurTransID==4)
239         {
240             ShowMark(5);
241         }
242         else if (m_nCurTransID==5)
243         {
244             TrunOffBrake();
245         }
246         else if (m_nCurTransID==6)//拨打火警电话
247         {
248             m_UIMain.ShowPanel(1, true);
249         }
250         else if (m_nCurTransID==7)
251         {
252             ShowMark(8);
253         }
254         else if (m_nCurTransID==8)//测试前门温度
255         {
256             m_UIMain.TestDoorTemp();
257         }
258         else if(m_nCurTransID==9)
259         {
260             ShowMark(10);
261         }
262         else if (m_nCurTransID==10)//测试后门温度
263         {
264            m_UIMain.ShowTestBehindDoor();
265         }
266         else if (m_nCurTransID==11)//按响警铃
267         {
268             transform.localEulerAngles = new Vector3(0, 180, 0);
269             m_UIMain.ShowPanel(8,true);
270         }
271         else if (m_nCurTransID==12)
272         {
273             ShowMark(13);
274         }
275         else if (m_nCurTransID==13)
276         {
277             m_UIMain.ShowPanel(9, true);
278             ShowMark(14);
279         }
280         else if (m_nCurTransID==14)
281         {
282             NearWaterTap();
283         }
284         else if (m_nCurTransID==15)
285         {
286             ShowMark(16);
287             m_head.GetComponent<BoxCollider>().enabled = false;
288         }
289         else if (m_nCurTransID==16)
290         {
291             ShowMark(17);
292             m_UIMain.ShowPanel(11, true);
293         }
294         else if (m_nCurTransID==17)
295         {
296             m_waringPanels[2].SetActive(true);
297             m_bNeedBend = true;
298             m_UIMain.ShowPanel(11, false);
299             m_UIMain.ShowPanel(12, true);
300             ShowMark(21);
301         }
302         else if (m_nCurTransID==21)//电梯门口
303         {
304             Invoke("OpenElevator",3f);
305             ShowMark(22);
306             m_UIMain.ShowPanel(12, false);
307         }
308         else if (m_nCurTransID==22)
309         {
310             m_UIMain.ShowPanel(14, true);
311             ShowMark(18);
312         }
313         else if (m_nCurTransID==18)
314         {
315             ShowMark(19);
316         }
317         else if (m_nCurTransID==19)
318         {
319             m_boomEffect.SetActive(true);
320             m_boomDoorBreak.Play();
321             Invoke("LeaveExperimentUI",2f);
322             ShowMark(20);
323         }
324         else if (m_nCurTransID==20)
325         {
326             ShowMark(23);
327             m_UIMain.ShowPanel(13, false);
328             m_UIMain.ShowPanel(14, false);
329         }
330         else if (m_nCurTransID==23)
331         {
332             m_UIMain.ShowPanel(15, true);
333             ShowMark(24);
334         }
335         else if (m_nCurTransID==24)
336         {
337             m_UIMain.ShowPanel(15, false);
338             HightlightManager.Instance.MaskEffectOn(m_extinguisher.gameObject);
339         }
340         else if (m_nCurTransID==25)
341         {
342             m_UIMain.ShowPanel(16, true);
343         }
344         else if (m_nCurTransID==26)
345         {
346             m_UIMain.ShowPanel(18, true);
347             ShowMark(27);
348         }
349         else if (m_nCurTransID==27)
350         {
351             m_UIMain.ShowPanel(18, false);
352             ShowMark(28);
353         }
354         else if (m_nCurTransID==28)
355         {
356             ShowMark(29);
357         }
358         else if (m_nCurTransID==29)
359         {
360             m_UIMain.ShowPanel(19, true);
361         }
362 
363     }
364     void LeaveExperimentUI()
365     {
366         m_UIMain.ShowPanel(13, true);
367     }
368     void OpenElevator()
369     {
370         m_elevator.Play();
371     }
372     public void ShowMark(int nindex)//显示地标位置
373     {
374         m_nCurTransID = nindex;
375         if (m_nCurTransID>=m_nPosCount)
376         {
377             m_PositionMarket.gameObject.SetActive(false);
378             return;
379         }
380         m_PositionMarket.position = m_markPosition[m_nCurTransID];
381         m_PositionMarket.gameObject.SetActive(true);
382     }
383     public void HitPositionMarket(bool bhit)
384     {
385         if (!m_PositionMarket.gameObject.activeSelf)
386         {
387             return;
388         }
389         if (bhit)
390         {
391             m_PositionMarket.localScale = m_largeScale;
392         }
393         else
394         {
395             m_PositionMarket.localScale = m_normalScale;
396         }
397     }
398     void ShowFireWaring()//火灾预警
399     {
400         m_classroomSmoke.SetActive(true);
401         m_waringPanels[0].SetActive(true);
402         Invoke("ShowTurnOffBrake",2f);
403     }
404     void ShowTurnOffBrake()//关闭电闸UI 显示下一个地标
405     {
406         m_UIMain.ShowPanel(0, true);
407         ShowMark(4);
408     }
409     void TrunOffBrake()
410     {
411         m_UIMain.ShowPanel(0,false);
412         m_brake.color = Color.red;
413         m_UIMain.ShowBreakArrow(true);
414     }
415     public void OnBrakeClicked()//当电闸被关闭
416     {
417         m_UIMain.ShowBreakArrow(false);
418         m_brake.color = Color.white;
419         m_classroomLights.SetActive(false);//灯光关掉
420         Invoke("EmergencyLamp",2f);
421     }
422     void EmergencyLamp()//应急灯
423     {
424         for (int i = 0; i < 2; i++)
425         {
426             m_emergencylamp[i].intensity = 0.4f;
427             m_classroomLights.SetActive(true);
428             ShowMark(6);
429         }
430     }
431     public void OnTouchFrontDoor(bool bTouch)
432     {
433         m_UIMain.UITouchFrontDoor(bTouch);
434     }
435     public void OnTouchBehindDoor(bool bTouch)
436     {
437         m_UIMain.UITouchBehindDoor(bTouch);
438     }
439     public void OnAlarmBellClick()
440     {
441         m_UIMain.UIAlarmBellClicked();
442     }
443     void NearWaterTap()//靠近水龙头
444     {
445         m_UIMain.ShowPanel(9,false);
446         m_UIMain.ShowPanel(10, true);
447         m_head.GetComponent<BoxCollider>().enabled = true;
448         HightlightManager.Instance.MaskEffectOn(m_watertap);
449     }
450     public void OnWtarteTapClicked()
451     {
452         m_UIMain.ShowPanel(10, false);
453         HightlightManager.Instance.MaskEffectOff(m_watertap);
454         m_towel.GetComponent<BoxCollider>().enabled = true;
455         m_watertap.GetComponent<MeshCollider>().enabled = false;
456         m_waterTapAni.Play();
457         m_waterEffect.SetActive(true);
458 
459         HightlightManager.Instance.MaskEffectOn(m_towel.gameObject);
460     }
461     public void OnTowelClicked()
462     {
463         HightlightManager.Instance.MaskEffectOff(m_towel.gameObject);
464         m_towel.parent = m_rightHand;
465         m_towelHand.SetActive(true);
466         m_towel.localPosition = new Vector3(0, 0,0.5f);
467     }
468     public bool IsTowelWet
469     {
470         get { return m_bTowelWet; }
471         set { m_bTowelWet = value; }
472     }
473     public void SetTowelWet()
474     {
475         m_bTowelWet = true;
476         m_towel.GetComponent<Renderer>().material.color = Color.white;
477     }
478     public void PickUpTowel()
479     {
480         m_towelHand.SetActive(false);
481         m_towel.parent = transform.Find("head");
482         m_towel.localPosition = new Vector3(0,-0.2f,0.2f);
483         m_towel.localEulerAngles = Vector3.zero;
484         m_waringPanels[1].SetActive(true);
485         m_waterEffect.SetActive(false);
486         ShowMark(15);
487     }
488     public void OnExtinguisherClicked()
489     {//灭火器被点击
490         m_fireRightHand.gameObject.SetActive(true);
491         m_fireLeftHand.gameObject.SetActive(true);
492         m_extinguisherAni.Play();
493 
494         HightlightManager.Instance.MaskEffectOff(m_extinguisher.gameObject);
495         m_fireplug.gameObject.SetActive(true);
496         m_extinguisher.GetComponent<BoxCollider>().enabled = false;
497 
498         OnFireplugCicked();
499     }
500     void OnFireplugCicked()
501     {
502         m_UIMain.ShowHandArrow(true);
503         m_fireLeftHand.GetComponent<Renderer>().material.color = Color.red;
504         m_fireRightHand.GetComponent<BoxCollider>().enabled = true;
505     }
506     public void OnHandClicked()
507     {
508         m_UIMain.ShowHandArrow(false);
509         m_fireLeftHand.gameObject.SetActive(false);
510         m_fireRightHand.gameObject.SetActive(false);
511 
512         m_extinguisher.parent = m_rightHand;
513         m_extinguisher.localPosition = new Vector3(0, 0, 0.08f);
514         m_extinguisher.localEulerAngles = new Vector3(-90,90,0);
515 
516         m_extinguisher.gameObject.SetActive(true);
517         m_bUseExtinguisher = true;
518         m_fireplug.gameObject.SetActive(false);
519     }
520     public void TurnExtingulsher()
521     {
522         if (!m_bUseExtinguisher)
523         {
524             return;
525         }
526         m_ganfenEffect.SetActive(true);
527     }
528     public void TouchedFire()
529     {
530         m_bTouchedFire = true;
531         m_fireAni.Play();
532     }
533     public void PutOutFire()
534     {
535         m_bUseExtinguisher = false;
536         m_ganfenEffect.SetActive(false);
537         m_extinguisher.parent = m_extinguisherParent;
538         m_extinguisher.localPosition = m_extinguisherPos;
539         m_extinguisher.localRotation = m_extinguisherRot;
540         ShowMark(25);
541     }
542     public void OnLeaveConfirmClicked()
543     {
544         m_UIMain.ShowPanel(16, false);
545         m_nCurTransID = 25;
546         TransPort();
547     }
548 }
GameMain
  1 using System.Collections;
  2 using System.Collections.Generic;
  3 using UnityEngine;
  4 
  5 public class UIMain : MonoBehaviour {
  6     private GameMain m_gameMain;
  7     private GameObject[] m_Panels;//面板数组
  8     private int m_nPanelCount=20;//面板数量
  9     private GameObject m_brakeArrow;
 10     private Vector3 m_testDoorPos0=new Vector3(3007f,267f,-2829.6f);//前门位置
 11     private Vector3 m_testDoorPos1 = new Vector3(3007f, 267f, -1371f);//后门位置
 12     private GameObject m_panelRedHand;
 13     private GameObject m_panelGrayHand;
 14     private bool m_bTestFrontDoorTemp=false;
 15     private bool m_bTestBehindDoorTemp = false;
 16 
 17     private GameObject m_handArrow;
 18 
 19     public bool BTestFrontDoorTemp
 20     {
 21         get
 22         {
 23             return m_bTestFrontDoorTemp;
 24         }
 25 
 26         set
 27         {
 28             m_bTestFrontDoorTemp = value;
 29         }
 30     }
 31 
 32     public bool BTestBehindDoorTemp
 33     {
 34         get
 35         {
 36             return m_bTestBehindDoorTemp;
 37         }
 38 
 39         set
 40         {
 41             m_bTestBehindDoorTemp = value;
 42         }
 43     }
 44 
 45     private void Start()
 46     {
 47         m_brakeArrow = transform.Find("BrakeArrow").gameObject;
 48         m_handArrow = transform.Find("HandArrow").gameObject;
 49         m_handArrow.SetActive(false);
 50         m_brakeArrow.SetActive(false);
 51     }
 52     private void OnEnable()
 53     {
 54         m_gameMain = GameObject.Find("WaveVR").GetComponent<GameMain>();
 55         m_Panels = new GameObject[m_nPanelCount];
 56         for (int i = 0; i < m_nPanelCount; i++)
 57         {
 58             m_Panels[i]= transform.Find("Panel" + i).gameObject;
 59             m_Panels[i].SetActive(false);
 60         }
 61         m_panelRedHand = transform.Find("PanelRedHand").gameObject;
 62         m_panelRedHand.SetActive(false);
 63         m_panelGrayHand = transform.Find("PanelGrayHand").gameObject;
 64         m_panelGrayHand.SetActive(false);
 65     }
 66     public void ShowPanel(int index,bool bShow)//显示面板
 67     {
 68         m_Panels[index].SetActive(bShow);
 69     }
 70     public void UIConfirmBtnClick(string sName)
 71     {
 72        int index=int.Parse(sName.Substring(sName.Length - 1));//找到最后一位数字
 73         if (index == 8)
 74         {
 75             ShowPanel(17, false);
 76             m_gameMain.TransportToClassRoom();
 77         }
 78         if (index==1)//确认拨打电话
 79         {
 80             ShowPanel(1,false);
 81             ShowPanel(2, true);
 82         }
 83         if (index==3)
 84         {
 85             ShowPanel(4, true);
 86             ShowPanel(3, false);
 87             Invoke("HideCallSuccess", 2f);
 88         }
 89         if (index==6)
 90         {
 91             m_bTestFrontDoorTemp = false;
 92             m_panelRedHand.SetActive(false);
 93             m_panelGrayHand.SetActive(false);
 94             ShowPanel(6, false);
 95             m_gameMain.ShowMark(9);
 96         }
 97         if (index==7)
 98         {
 99             m_bTestBehindDoorTemp = false;
100             m_panelGrayHand.SetActive(false);
101             m_panelRedHand.SetActive(false);
102             ShowPanel(7, false);
103             m_gameMain.TransportToPassageWay();
104         }
105     }
106     public void UIChoseBtnClick(string sName)
107     {
108         int index = int.Parse(sName.Substring(sName.Length - 1));
109         if (index==1)//选择正确
110         {
111             ShowPanel(4, true);
112             Invoke("HideCallSuccess",2f);
113         }
114         else
115         {
116             ShowPanel(3, true);
117         }
118         ShowPanel(2, false);
119     }
120     public void ShowBreakArrow(bool bshow)
121     {
122         m_brakeArrow.SetActive(bshow);
123     }
124     void HideCallSuccess()
125     {
126         ShowPanel(4, false);
127         m_gameMain.ShowMark(7);
128     }
129     public void TestDoorTemp()
130     {
131         m_Panels[5].transform.localPosition = m_testDoorPos0;
132         ShowPanel(5, true);
133         m_panelRedHand.SetActive(true);
134         BeginTestFrontDoorTemp();
135     }
136     void BeginTestFrontDoorTemp()//开始测试前门温度
137     {
138         BTestFrontDoorTemp = true;
139     }
140     public void UITouchFrontDoor(bool bTouch)
141     {
142         if (!BTestFrontDoorTemp)
143         {
144             return;
145         }
146         m_panelRedHand.transform.localPosition = m_testDoorPos0;
147         m_panelGrayHand.transform.localPosition = m_testDoorPos0;
148         m_panelRedHand.SetActive(!bTouch);
149         m_panelGrayHand.SetActive(bTouch);
150         if (bTouch)
151         {
152             ShowPanel(5, false);
153             ShowPanel(6, true);
154         }
155     }
156     public void UITouchBehindDoor(bool bTouch)
157     {
158         if (!m_bTestBehindDoorTemp)
159         {
160             return;
161         }
162         m_panelRedHand.transform.localPosition = m_testDoorPos1;
163         m_panelGrayHand.transform.localPosition = m_testDoorPos1;
164         m_panelRedHand.SetActive(!bTouch);
165         m_panelGrayHand.SetActive(bTouch);
166         if (bTouch)
167         {
168             ShowPanel(5, false);
169             ShowPanel(7, true);
170         }
171     }
172 
173     public void ShowTestBehindDoor()
174     {
175         m_Panels[5].transform.localPosition = m_testDoorPos1;
176         ShowPanel(5, true);
177         m_panelRedHand.SetActive(true);
178         Invoke("BeginTestBehindDoorTemp",1f);
179     }
180     void BeginTestBehindDoorTemp()//开始测试后门温度
181     {
182         m_bTestBehindDoorTemp = true;
183     }
184     public void UIAlarmBellClicked()
185     {
186         ShowPanel(8, false);
187         m_gameMain.ShowMark(12);
188     }
189     public void ShowHandArrow(bool bShow)
190     {
191         m_handArrow.SetActive(bShow);
192     }
193 
194 }
UIMain
 1 using System.Collections;
 2 using System.Collections.Generic;
 3 using UnityEngine;
 4 using wvr;
 5 
 6 public class Teleport : MonoBehaviour {
 7     private GameMain m_Main;
 8     private GameObject m_WaveVR;
 9     private WaveVR_SimplePointer m_pointer;
10     // Use this for initialization
11     void Start () {
12         m_pointer = transform.GetComponent<WaveVR_SimplePointer>();
13         m_Main = transform.parent.GetComponent<GameMain>();
14     }
15     
16     // Update is called once per frame
17     void Update () {
18         if (WaveVR_Controller.Input(WVR_DeviceType.WVR_DeviceType_Controller_Right).GetPressDown(wvr.WVR_InputId.WVR_InputId_Alias1_Menu))
19         {
20             Application.Quit();
21         }
22         if (!m_pointer||!m_pointer.GetHitTrans())
23         {
24             return;
25         }
26         GameObject hititem=m_pointer.GetHitTrans().gameObject;
27         if (hititem.name == "PositionMarker")//将地标放大
28         {
29             m_Main.HitPositionMarket(true);
30             if (WaveVR_Controller.Input(WVR_DeviceType.WVR_DeviceType_Controller_Right).GetPressDown(WVR_InputId.WVR_InputId_Alias1_Touchpad))
31             {
32                 m_Main.TransPort();
33             }
34         }
35         else
36         {
37             m_Main.HitPositionMarket(false);
38         }
39         if (WaveVR_Controller.Input(WVR_DeviceType.WVR_DeviceType_Controller_Right).GetPressDown(WVR_InputId.WVR_InputId_Alias1_Touchpad))
40         {
41             m_Main.TurnExtingulsher();
42             if (hititem.name.Contains("ConfirmButton"))//点到按钮
43             {
44                 m_Main.OnConfirmButtonClicked(hititem.name);
45             }
46             if (hititem.name== "Brake")
47             {
48                 m_Main.OnBrakeClicked();
49             }
50             if (hititem.name.Contains("ChoseButton"))
51             {
52                 m_Main.OnChoseButtonClicked(hititem.name);
53             }
54             if (hititem.name== "AlarmBell")//点击警铃
55             {
56                m_Main.OnAlarmBellClick();
57             }
58             if (hititem.name.Equals("WaterTap"))
59             {
60                m_Main.OnWtarteTapClicked();
61             }
62             if (hititem.name.Equals("Towel"))
63             {
64                 m_Main.OnTowelClicked();
65             }
66             if (hititem.name.Equals("loidao_dong_03"))
67             {
68                 m_Main.OnExtinguisherClicked();
69             }
70             if (hititem.name.Equals("body002"))
71             {
72                 m_Main.OnHandClicked();
73             }
74             if (hititem.name.Equals("OkButton"))
75             {
76                 m_Main.OnLeaveConfirmClicked();
77             }
78 
79         }
80         if (hititem.name.Equals("FrontDoor"))//前门
81         {
82             m_Main.OnTouchFrontDoor(true);
83         }
84         else
85         {
86             m_Main.OnTouchFrontDoor(false);
87         }
88         if (hititem.name.Equals("BehindDoor"))
89         {
90             m_Main.OnTouchBehindDoor(true);
91         }
92         else
93         {
94             m_Main.OnTouchBehindDoor(false);
95         }
96     }
97 }
Teleport
 1 using System.Collections;
 2 using System.Collections.Generic;
 3 using UnityEngine;
 4 
 5 public class ParticleCollosion : MonoBehaviour {
 6     public GameMain m_WaveVR;
 7     // Use this for initialization
 8     private void OnParticleCollision(GameObject other)
 9     {
10         if (other.name.Equals("Waterfall_Emitter_1")&&!m_WaveVR.IsTowelWet)
11         {
12             m_WaveVR.SetTowelWet();
13         }
14         if (other.name.Equals("MieHuoQiSmoke")&&!m_WaveVR .IsTouchedFire)
15         {
16             m_WaveVR.TouchedFire();
17             Invoke("OnFirePutOut",5f);
18         }
19     }
20     private void OnFirePutOut()
21     {
22         m_WaveVR.PutOutFire();
23     }
24 }
ParticleCollosion
 1 using System.Collections;
 2 using System.Collections.Generic;
 3 using UnityEngine;
 4 
 5 /// <summary>
 6 /// 这个脚本要挂在头上,只要获得父物体就可以了
 7 /// </summary>
 8 public class ColliderManager : MonoBehaviour {
 9     GameMain gameMain;
10 
11     // Use this for initialization
12     void Start () {
13         gameMain = transform.parent.GetComponent<GameMain>();//它的父物体加上这个脚本???
14     }
15 
16     private void OnTriggerEnter(Collider other)//碰撞
17     {
18         if (other.name.Equals("Towel")&&gameMain.IsTowelWet)//碰着的是毛巾,毛巾是沾水了的,才固定在头上
19         {
20             gameMain.PickUpTowel();
21         }
22     }
23 
24 }
ColliderManager   
 1 using System.Collections;
 2 using System.Collections.Generic;
 3 using UnityEngine;
 4 
 5 /// <summary>
 6 /// 控制高亮-》控制物体材质球,为了外面的好调用,把这个脚本写成一个单列,不需要挂在任何物体上,
 7 /// </summary>
 8 public class HightlightManager  {//做成单利
 9     private static HightlightManager _instance = null; //单列创建一个对象,不声明
10     public static HightlightManager Instance
11     {
12         get
13         {
14             if (_instance==null)
15             {
16                 _instance = new HightlightManager();
17             }
18             return _instance;
19         }
20     }
21     public void MaskEffectOn(GameObject gameObject)//打开高亮
22     {
23         if (gameObject==null)//如果物体为空,不能设置高亮
24         {
25 
26         }
27       Material[] material= gameObject.GetComponent<Renderer>().materials; ;//一个物体可以有多个材质球,所以要找到所以的
28         foreach (var item in material)
29         {
30             item.EnableKeyword("_EMISSION");//打开高亮  选择这个?EnableKeyword????????
31             item.SetColor("_EmissionColor", new Color(0, 0.4568f, 0.7297f));
32         }
33     }
34     public void MaskEffectOff(GameObject gameObject)//关闭高亮
35     {
36         if (gameObject == null)//如果物体为空,不能设置高亮
37         {
38 
39         }
40         Material[] material = gameObject.GetComponent<Renderer>().materials; ;//一个物体可以有多个材质球,所以要找到所以的
41         foreach (var item in material)
42         {
43             item.DisableKeyword("_EMISSION");//关闭高亮,关掉勾
44             item.SetColor("_EmissionColor", new Color(0, 0.4568f, 0.7297f));
45         }
46 
47     }
48 }
HightlightManager

 

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          

 

posted @ 2018-10-31 11:25  白纸菇凉  阅读(465)  评论(0编辑  收藏  举报