using UnityEngine; using System.Collections; using AX.TrackRecord; using System; using AX.MessageSystem; using UnityEngine.UI; using System.Collections.Generic; public class ControlYunTiChe : ControlJuBi { private GameObject part1; private GameObject part2; private GameObject part3; private GameObject part4; private GameObject part5; private GameObject part6; private GameObject part7; private GameObject part8; private GameObject part9; private GameObject part10; private GameObject water; private CarMessage CarMess; string CarName; private float rotatSpeed = 10; float zSpeed = 5; float aspect = 1.5f; bool ctrlDown = false; public bool firstZero = true; public bool firstFull = false; public bool secondZero = true; public bool secondFull = false; public bool thirdZero = true; public bool thirdFull = false; public bool fourthZero = true; public bool fourthFull = false; public bool fifthZero = true; public bool fifthFull = false; public bool Min = false; public bool Max = false; //public LouCengControllor zSpeedId; float SpeedBase = 30; Slider zSpeedId; GameObject TimeZhou; private GameObject CarControlToggle; private Car_3_JGC_GPC_YTC_Rise_Attribute carAttribute = new Car_3_JGC_GPC_YTC_Rise_Attribute(); public Car_3_JGC_GPC_YTC_Rise_Attribute CarAttribute { set { carAttribute = value; firstZero = carAttribute.FirstZero; firstFull = carAttribute.FirstFull; secondZero = carAttribute.SecondZero; secondFull = carAttribute.SecondFull; thirdZero = carAttribute.ThirdZero; thirdFull = carAttribute.ThirdFull; fourthZero = carAttribute.FourthZero; fourthFull = carAttribute.FourthFull; fifthFull = carAttribute.FifthFull; fifthZero = carAttribute.FifthZero; //RiseNum = carAttribute.RiseNum; MaxRise = carAttribute.MaxRise; } get { carAttribute.FirstZero = firstZero; carAttribute.FirstFull = firstFull; carAttribute.SecondZero = secondZero; carAttribute.SecondFull = secondFull; carAttribute.ThirdZero = thirdZero; carAttribute.ThirdFull = thirdFull; carAttribute.FourthZero = fourthZero; carAttribute.FourthFull = fourthFull; carAttribute.FifthFull = fifthFull; carAttribute.FifthZero = fifthZero; //carAttribute.RiseNum = RiseNum; carAttribute.MaxRise = MaxRise; return carAttribute; } } void Awake() { CarMess = this.gameObject.GetComponent(); part1 = this.transform.Find("Bi").gameObject; part2 = this.transform.Find("Bi/Bi1").gameObject; part3 = this.transform.Find("Bi/Bi1/Bi2").gameObject; part4 = this.transform.Find("Bi/Bi1/Bi2/Bi3").gameObject; part5 = this.transform.Find("Bi/Bi1/Bi2/Bi3/Bi4").gameObject; part6 = this.transform.Find("Bi/Bi1/Bi2/Bi3/Bi4/Bi5").gameObject; part7 = this.transform.Find("Bi/Bi1/Bi2/Bi3/Bi4/Bi5/Bi6").gameObject; part8 = this.transform.Find("Bi/Bi1/Bi2/Bi3/Bi4/Bi5/Bi6/pingtai").gameObject; part10= part8.transform.Find("shuipao").gameObject; part9 = this.transform.Find("polySurface3148/yuntibi1").gameObject; //water = part10.transform.FindChild("Hose").gameObject; part = (int)(100 / 6); zSpeedId = GameObject.Find("Canvas").transform.Find("控制举臂").GetComponent().TheSlider; Part1currentFrame_y = part1.transform.localEulerAngles.y; Part2currentFrame_x = part2.transform.localEulerAngles.x; Part3currentFrame_z = part3.transform.localPosition.z; Part4currentFrame_z = part4.transform.localPosition.z; Part5currentFrame_z = part5.transform.localPosition.z; Part6currentFrame_z = part6.transform.localEulerAngles.z; Part7currentFrame_z = part7.transform.localEulerAngles.z; Part1lastFrame_y = Part1currentFrame_y; Part2lastFrame_x = Part2currentFrame_x; Part3lastFrame_z = Part3currentFrame_z; Part4lastFrame_z = Part4currentFrame_z; Part5lastFrame_z = Part5currentFrame_z; Part6lastFrame_z = Part6currentFrame_z; Part7lastFrame_z = Part7currentFrame_z; CarControlToggle = GameObject.Find("Canvas").transform.Find("控制举臂").gameObject; Debug.Log((part2.transform.localEulerAngles.x)); } //void OnDestroy() //{ // MessageDispatcher.RemoveListener("LeftShift_W_YTC", LeftShift_W_YTC, "CUBE"); // MessageDispatcher.RemoveListener("LeftShift_S_YTC", LeftShift_S_YTC, "CUBE"); // MessageDispatcher.RemoveListener("W_YTC", W_YTC, "CUBE"); // MessageDispatcher.RemoveListener("S_YTC", S_YTC, "CUBE"); // MessageDispatcher.RemoveListener("A_YTC", A_YTC, "CUBE"); // MessageDispatcher.RemoveListener("D_YTC", D_YTC, "CUBE"); // MessageDispatcher.RemoveListener("U_YTC", U_YTC, "CUBE"); // MessageDispatcher.RemoveListener("J_YTC", J_YTC, "CUBE"); // MessageDispatcher.RemoveListener("H_YTC", H_YTC, "CUBE"); // MessageDispatcher.RemoveListener("K_YTC", K_YTC, "CUBE"); // MessageDispatcher.RemoveListener("Equals_YTC", Equals_YTC, "CUBE"); // MessageDispatcher.RemoveListener("Minus_YTC", Minus_YTC, "CUBE"); // MessageDispatcher.RemoveListener("BackZhiJia", BackZhiJia); //} //void OnDisable() //{ // MessageDispatcher.RemoveListener("LeftShift_W_YTC", LeftShift_W_YTC, "CUBE"); // MessageDispatcher.RemoveListener("LeftShift_S_YTC", LeftShift_S_YTC, "CUBE"); // MessageDispatcher.RemoveListener("W_YTC", W_YTC, "CUBE"); // MessageDispatcher.RemoveListener("S_YTC", S_YTC, "CUBE"); // MessageDispatcher.RemoveListener("A_YTC", A_YTC, "CUBE"); // MessageDispatcher.RemoveListener("D_YTC", D_YTC, "CUBE"); // MessageDispatcher.RemoveListener("U_YTC", U_YTC, "CUBE"); // MessageDispatcher.RemoveListener("J_YTC", J_YTC, "CUBE"); // MessageDispatcher.RemoveListener("H_YTC", H_YTC, "CUBE"); // MessageDispatcher.RemoveListener("K_YTC", K_YTC, "CUBE"); // MessageDispatcher.RemoveListener("Equals_YTC", Equals_YTC, "CUBE"); // MessageDispatcher.RemoveListener("Minus_YTC", Minus_YTC, "CUBE"); // MessageDispatcher.RemoveListener("BackZhiJia", BackZhiJia); //} //void OnEnable() //{ // MessageDispatcher.AddListener("LeftShift_W_YTC", LeftShift_W_YTC, "CUBE"); // MessageDispatcher.AddListener("LeftShift_S_YTC", LeftShift_S_YTC, "CUBE"); // MessageDispatcher.AddListener("W_YTC", W_YTC, "CUBE"); // MessageDispatcher.AddListener("S_YTC", S_YTC, "CUBE"); // MessageDispatcher.AddListener("A_YTC", A_YTC, "CUBE"); // MessageDispatcher.AddListener("D_YTC", D_YTC, "CUBE"); // MessageDispatcher.AddListener("U_YTC", U_YTC, "CUBE"); // MessageDispatcher.AddListener("J_YTC", J_YTC, "CUBE"); // MessageDispatcher.AddListener("H_YTC", H_YTC, "CUBE"); // MessageDispatcher.AddListener("K_YTC", K_YTC, "CUBE"); // MessageDispatcher.AddListener("Equals_YTC", Equals_YTC, "CUBE"); // MessageDispatcher.AddListener("Minus_YTC", Minus_YTC, "CUBE"); // MessageDispatcher.AddListener("BackZhiJia", BackZhiJia); //} public override void BackZhiJia(IMessage message) { if ((string)message.Data == this.gameObject.name) { part1.transform.localPosition = new Vector3(0.006774902f, 3.515285f, -5.716083f); part1.transform.localEulerAngles = new Vector3(0, 0, 0); part2.transform.localPosition = new Vector3(0.02789863f, 1.468759f, -0.6857472f); part2.transform.localEulerAngles = new Vector3(-2f, 0, 0); part3.transform.localPosition = new Vector3(0f, 0.1338046f, 0f); part3.transform.localEulerAngles = new Vector3(0, 0, 0); part4.transform.localPosition = new Vector3(0, 0, 0.194763f); part4.transform.localEulerAngles = new Vector3(0, 0, 0); part5.transform.localPosition = new Vector3(0, 0f, 1.136868f); part5.transform.localEulerAngles = new Vector3(0, 0, 0); part6.transform.localPosition = new Vector3(-0.00153645f, 0.1293935f, 0f); part6.transform.localEulerAngles = new Vector3(0, 0, 0); part7.transform.localPosition = new Vector3(0f, 0.1154551f, 0f); part7.transform.localEulerAngles = new Vector3(0, 0, 0); part8.transform.localPosition = new Vector3(-0.03811928f, -0.659f, 16.05379f); part8.transform.localEulerAngles = new Vector3(0, 0, 0); part10.transform.localPosition = new Vector3(0.03812027f, 0.7524695f, 0.3422127f); part10.transform.localEulerAngles = new Vector3(0, 0, 0); MaxRise = 16; NewSetBool(); if (RecordManager.Instance.IsRecording) { MessageDispatcher.SendMessage("RecordZhiJiaBack", (object)this.gameObject.name); } } } public override void LeftShift_W(IMessage message) { if ((string)message.Data == this.gameObject.name) { if (gameObject.GetComponent().ControlJuBi && CarControlToggle.activeInHierarchy) { if (int.Parse(CarMess.CarAttri.Hegih) <= 2 * part) { return; } float TheHeigh = MaxRise + part3.transform.localPosition.z + part4.transform.localPosition.z + part5.transform.localPosition.z + part6.transform.localPosition.z + part7.transform.localPosition.z; if (TheHeigh > float.Parse(CarMess.Heigh)) { return; } if (!firstFull) { float z = part3.transform.localPosition.z; if (int.Parse(CarMess.CarAttri.Hegih) - MaxRise >= part) { if (z > 15.5f) { firstFull = true; //MaxRise += part; Vector3 newVector = part3.transform.localPosition; newVector.z = 15.5f; } else { firstZero = false; part3.transform.localPosition = new Vector3(0.01634139f, 0.1338f, z + Time.deltaTime * zSpeedId.value * SpeedBase / aspect); } } else { if (z >= 0 && z < 15.57183f) { firstZero = false; part3.transform.localPosition = new Vector3(0.01634139f, 0.1338f, z + Time.deltaTime * zSpeedId.value * SpeedBase / aspect); } else { firstFull = false; } } } else if (firstFull && !secondFull) { float z = part4.transform.localPosition.z; if (int.Parse(CarMess.CarAttri.Hegih) - MaxRise >= part) { if (z > 15.5f) { secondFull = true; //MaxRise += part; Vector3 newVector = part3.transform.localPosition; newVector.z = 15.5f; } else { secondZero = false; part4.transform.localPosition = new Vector3(0.01634139f, 0.035f, z + Time.deltaTime * zSpeedId.value * SpeedBase / aspect); } } else { if (z >= 0 && z < 15.57183f) { secondZero = false; part4.transform.localPosition = new Vector3(0.01634139f, 0.035f, z + Time.deltaTime * zSpeedId.value * SpeedBase / aspect); } else { secondFull = false; } } } else if (firstFull && secondFull && !thirdFull) { float z = part5.transform.localPosition.z; if (int.Parse(CarMess.CarAttri.Hegih) - MaxRise >= part) { if (z > 15.5f) { thirdFull = true; //MaxRise += part; Vector3 newVector = part3.transform.localPosition; newVector.z = 15.5f; } else { thirdZero = false; part5.transform.localPosition = new Vector3(0.01634139f, 0.129f, z + Time.deltaTime * zSpeedId.value * SpeedBase / aspect); } } else { if (z >= 0 && z < 15.57183f) { thirdZero = false; part5.transform.localPosition = new Vector3(0.01634139f, 0.035f, z + Time.deltaTime * zSpeedId.value * SpeedBase / aspect); } else { thirdFull = false; } } } else if (firstFull && secondFull && thirdFull && !fourthFull) { float z = part6.transform.localPosition.z; if (int.Parse(CarMess.CarAttri.Hegih) - MaxRise >= part) { if (z > 15.5f) { fourthFull = true; //MaxRise += part; Vector3 newVector = part3.transform.localPosition; newVector.z = 15.5f; } else { fourthZero = false; part6.transform.localPosition = new Vector3(0.01634139f, 0.129f, z + Time.deltaTime * zSpeedId.value * SpeedBase / aspect); } } else { if (z >= 0 && z < 15.57183f) { fourthZero = false; part6.transform.localPosition = new Vector3(0.01634139f, 0.035f, z + Time.deltaTime * zSpeedId.value * SpeedBase / aspect); } else { fourthFull = false; } } } else if (firstFull && secondFull && thirdFull && fourthFull && !fifthFull) { float z = part7.transform.localPosition.z; if (int.Parse(CarMess.CarAttri.Hegih) - MaxRise >= part) { if (z > 15.5f) { fifthFull = true; //MaxRise += part; Vector3 newVector = part3.transform.localPosition; newVector.z = 15.5f; } else { fifthZero = false; part7.transform.localPosition = new Vector3(0.01634139f, 0.129f, z + Time.deltaTime * zSpeedId.value * SpeedBase / aspect); } } else { if (z >= 0 && z < 15.57183f) { fifthZero = false; part7.transform.localPosition = new Vector3(0.01634139f, 0.035f, z + Time.deltaTime * zSpeedId.value * SpeedBase / aspect); } else { fifthFull = false; } } } } } }//LeftShift_W控制车臂伸长 public override void LeftShift_S(IMessage message) { if ((string)message.Data == this.gameObject.name) { if (gameObject.GetComponent().ControlJuBi && CarControlToggle.activeInHierarchy) { if (!fifthZero) { float z = part7.transform.localPosition.z; if (z < 0) { fifthZero = true; //MaxRise -= part; Vector3 newVector = part7.transform.localPosition; newVector.z = 0; part7.transform.localPosition = newVector; } else { fifthFull = false; part7.transform.localPosition = new Vector3(0.01634139f, 0.129f, z - Time.deltaTime * zSpeedId.value * SpeedBase / aspect); } } if (!fourthZero && fifthZero) { float z = part6.transform.localPosition.z; if (z < 0) { fourthZero = true; //MaxRise -= part; Vector3 newVector = part6.transform.localPosition; newVector.z = 0; part6.transform.localPosition = newVector; } else { fourthFull = false; part6.transform.localPosition = new Vector3(0.01634139f, 0.129f, z - Time.deltaTime * zSpeedId.value * SpeedBase / aspect); } } else if (!thirdZero && fourthZero && fifthZero) { float z = part5.transform.localPosition.z; if (z < 0) { thirdZero = true; //MaxRise -= part; Vector3 newVector = part5.transform.localPosition; newVector.z = 0; part5.transform.localPosition = newVector; } else { thirdFull = false; part5.transform.localPosition = new Vector3(0.01634139f, 0.129f, z - Time.deltaTime * zSpeedId.value * SpeedBase / aspect); } } if (fourthZero && thirdZero && !secondZero) { float z = part4.transform.localPosition.z; if (z < 0) { secondZero = true; //MaxRise -= part; Vector3 newVector = part4.transform.localPosition; newVector.z = 0; part4.transform.localPosition = newVector; } else { secondFull = false; part4.transform.localPosition = new Vector3(0.01634139f, 0.035f, z - Time.deltaTime * zSpeedId.value * SpeedBase / aspect); } } else if (thirdZero && secondZero && !firstZero) { float z = part3.transform.localPosition.z; if (z < 0) { firstZero = true; MaxRise = part; Vector3 newVector = part3.transform.localPosition; newVector.z = 0; part3.transform.localPosition = newVector; } else { firstFull = false; part3.transform.localPosition = new Vector3(0.01634139f, 0.1338f, z - Time.deltaTime * zSpeedId.value * SpeedBase / aspect); } } } } }//LeftShift_S控制车臂的缩短 public override void W(IMessage message) { if ((string)message.Data == this.gameObject.name) { if (gameObject.GetComponent().ControlJuBi && CarControlToggle.activeInHierarchy) { if ((part2.transform.localEulerAngles.x >= 284 && part2.transform.localEulerAngles.x <= 360) || (part2.transform.localEulerAngles.x==0)) { part2.transform.Rotate(-Time.deltaTime * zSpeedId.value * SpeedBase, 0, 0); } } } }//W控制车臂抬起 public override void S(IMessage message) { if ((string)message.Data == this.gameObject.name) { if (gameObject.GetComponent().ControlJuBi && CarControlToggle.activeInHierarchy) { if (part2.transform.localEulerAngles.x >= 357) { return; } else { part2.transform.Rotate(Time.deltaTime * zSpeedId.value * SpeedBase, 0, 0); } } } }//S控制车臂的放下 public override void A(IMessage message) { if ((string)message.Data == this.gameObject.name) { if (gameObject.GetComponent().ControlJuBi && CarControlToggle.activeInHierarchy) { part1.transform.Rotate(0, -Time.deltaTime * zSpeedId.value * SpeedBase, 0); } } }//A控制车臂的左旋转 public override void D(IMessage message) { if ((string)message.Data == this.gameObject.name) { if (gameObject.GetComponent().ControlJuBi && CarControlToggle.activeInHierarchy) { part1.transform.Rotate(0, Time.deltaTime * zSpeedId.value * SpeedBase, 0); } } }//D控制车臂的右旋转 public override void U(IMessage message) { if ((string)message.Data == this.gameObject.name) { if (gameObject.GetComponent().ControlShuiPao) { part10.transform.Rotate(-Time.deltaTime * zSpeedId.value * SpeedBase, 0, 0, Space.Self); } } }//U控制救人台的抬起 public override void J(IMessage message) { if ((string)message.Data == this.gameObject.name) { if (gameObject.GetComponent().ControlShuiPao) { part10.transform.Rotate(Time.deltaTime * zSpeedId.value * SpeedBase, 0, 0, Space.Self); } } }//U控制救人台的放下 public override void K(IMessage message) { if ((string)message.Data == this.gameObject.name) { if (gameObject.GetComponent().ControlShuiPao) { part10.transform.Rotate(0, Time.deltaTime * zSpeedId.value * SpeedBase, 0, Space.World); } } }//U控制救人台的右旋转 public override void H(IMessage message) { if ((string)message.Data == this.gameObject.name) { if (gameObject.GetComponent().ControlShuiPao) { part10.transform.Rotate(0, -Time.deltaTime * zSpeedId.value * SpeedBase, 0, Space.World); } } }//U控制救人台的左旋转 public override void Equals(IMessage message) { if ((string)message.Data == this.gameObject.name) { if (gameObject.GetComponent().ControlShuiPao) { if (part10.transform.Find("Hose").childCount > 0) { ParticleSystemControl scale = part10.transform.Find("Hose").GetChild(0).GetComponent(); scale.waterStraightScale += Time.deltaTime * 0.5f; } //scale.waterFogScale += Time.deltaTime * 0.5f; } } }//控制水流增加 public override void Minus(IMessage message) { if ((string)message.Data == this.gameObject.name) { if (gameObject.GetComponent().ControlShuiPao) { if (part10.transform.Find("Hose").childCount > 0) { ParticleSystemControl scale = part10.transform.Find("Hose").GetChild(0).GetComponent(); scale.waterStraightScale -= Time.deltaTime * 0.5f; } //scale.waterFogScale -= Time.deltaTime * 0.5f; } } }//控制水流减少 bool TheOneFull = true; bool TheOneZero = false; bool TheTwoFull = true; bool TheTwoZero = false; bool TheThreeFull = true; bool TheThreeZero = false; bool TheFourFull = true; bool TheFourZero = false; bool TheFiveFull = true; bool TheFiveZero = true; public float GetRiseNum; //public int RiseNum; float part; public float MaxRise = 16; public void NewSetBool() { MaxRise = 16; firstZero = true; firstFull = false; secondZero = true; secondFull = false; thirdZero = true; thirdFull = false; fourthZero = true; fourthFull = false; fifthZero = true; fifthFull = false; TheOneFull = true; TheOneZero = false; TheTwoFull = true; TheTwoZero = false; TheThreeFull = true; TheThreeZero = false; TheFourFull = true; TheFourZero = false; TheFiveFull = true; TheFiveZero = true; } bool OneUp = false; bool OneDown = false; bool TwoUp = false; bool TwoDown = false; bool ThreeUp = false; bool ThreeDown = false; bool FourUp = false; bool FourDown = false; bool FiveUp = false; bool FiveDown = false; float TIMESTAMP = 1.0f; float timer = 0f; float THRESHOLD = 0.1f; float Part1lastFrame_y; float Part1currentFrame_y; float Part2lastFrame_x; float Part2currentFrame_x; float Part3lastFrame_z; float Part3currentFrame_z; float Part4lastFrame_z; float Part4currentFrame_z; float Part5lastFrame_z; float Part5currentFrame_z; float Part6lastFrame_z; float Part6currentFrame_z; float Part7lastFrame_z; float Part7currentFrame_z; void Update() { if (GetComponent().ControlJuBi) { var theta = Vector3.Dot(part8.transform.forward, Vector3.up); var angle = Mathf.Rad2Deg * theta; part8.transform.Rotate(angle, 0, 0); } if (Input.GetKeyDown(KeyCode.LeftControl)) { ctrlDown = true; } else { ctrlDown = false; } if (RecordManager.Instance.IsRecording) { if (GetComponent().ControlJuBi) { if (timer > 0) { timer -= Time.deltaTime; } else { Part1currentFrame_y = part1.transform.localEulerAngles.y; Part2currentFrame_x = part2.transform.localEulerAngles.x; Part3currentFrame_z = part3.transform.localPosition.z; Part4currentFrame_z = part4.transform.localPosition.z; Part5currentFrame_z = part5.transform.localPosition.z; Part6currentFrame_z = part6.transform.localEulerAngles.z; Part7currentFrame_z = part7.transform.localEulerAngles.z; if (Mathf.Abs(Part1currentFrame_y - Part1lastFrame_y) > THRESHOLD || Mathf.Abs(Part2currentFrame_x - Part2lastFrame_x) > THRESHOLD || Mathf.Abs(Part3currentFrame_z - Part3lastFrame_z) > THRESHOLD || Mathf.Abs(Part4currentFrame_z - Part4lastFrame_z) > THRESHOLD || Mathf.Abs(Part5currentFrame_z - Part5lastFrame_z) > THRESHOLD || Mathf.Abs(Part6currentFrame_z - Part6lastFrame_z) > THRESHOLD || Mathf.Abs(Part7currentFrame_z - Part7lastFrame_z) > THRESHOLD ) { MessageDispatcher.SendMessage("RecordControlJuBiEvent", (object)this.name); } Part1lastFrame_y = Part1currentFrame_y; Part2lastFrame_x = Part2currentFrame_x; Part3lastFrame_z = Part3currentFrame_z; Part4lastFrame_z = Part4currentFrame_z; Part5lastFrame_z = Part5currentFrame_z; Part6lastFrame_z = Part6currentFrame_z; Part7lastFrame_z = Part7currentFrame_z; timer = TIMESTAMP; } } } } public override void LeftShift_J(IMessage message) { } public override void LeftShift_U(IMessage message) { } }