using DG.Tweening; using System.Collections; using UnityEngine; /// /// 云梯车控制 /// public class YunTiCheController : ElevatingController { public GameObject part8; protected Vector3 part8Rot; protected Vector3 part8Pos; public override void InitData() { base.InitData(); part8 = transform.Find("Scene/Body/Base/Bi1/Bi2/Bi3/Bi4/Bi5/Bi6/Bi7").gameObject; } protected override void Init() { //StartCoroutine(OnAnimationPlay()); } /// /// 实例化时主臂展开 /// /// private IEnumerator OnAnimationPlay() { yield return new WaitForSeconds(1f); part2.transform.DORotate(new Vector3(-30f, 0f, 0f), 1f); } /// /// 获取初始状态数据 /// protected override void GetOriginalTransform() { base.GetOriginalTransform(); part8Pos = part8.transform.localPosition; part8Rot = part8.transform.localEulerAngles; } /// /// 主臂控制 /// protected override void MainArmControl() { base.MainArmControl(); if (ctrlDown && Input.GetKey(PowerManager.Instance.up)) { if (!firstFull) { float z = part3.transform.localPosition.z; if (z > 15) { firstFull = true; } else { firstZero = false; part3.transform.localPosition = new Vector3(part3Pos.x, part3Pos.y, z + Time.deltaTime * zSpeed); } } else if (firstFull && !secondFull) { float z = part4.transform.localPosition.z; if (z > 15) { secondFull = true; } else { secondZero = false; part4.transform.localPosition = new Vector3(part4Pos.x, part4Pos.y, z + Time.deltaTime * zSpeed); } } else if (firstFull && secondFull && !thirdFull) { float z = part5.transform.localPosition.z; if (z > 15) { thirdFull = true; } else { thirdZero = false; part5.transform.localPosition = new Vector3(part5Pos.x, part5Pos.y, z + Time.deltaTime * zSpeed); } } else if (firstFull && secondFull && thirdFull && !fourthFull) { float z = part6.transform.localPosition.z; if (z > 15) { fourthFull = true; } else { fourthZero = false; part6.transform.localPosition = new Vector3(part6Pos.x, part6Pos.y, z + Time.deltaTime * zSpeed); } } else if (firstFull && secondFull && thirdFull && fourthFull && !fifthFull) { float z = part7.transform.localPosition.z; if (z > 15) { fifthFull = true; } else { fifthZero = false; part7.transform.localPosition = new Vector3(part7Pos.x, part7Pos.y, z + Time.deltaTime * zSpeed); } } } else if (ctrlDown && Input.GetKey(PowerManager.Instance.down)) { if (!fifthZero) { float z = part7.transform.localPosition.z; if (z < 0) { fifthZero = true; } else { fifthFull = false; part7.transform.localPosition = new Vector3(part7Pos.x, part7Pos.y, z - Time.deltaTime * zSpeed); } } else if (fifthZero && !fourthZero) { float z = part6.transform.localPosition.z; if (z < 0) { fourthZero = true; } else { fourthFull = false; part6.transform.localPosition = new Vector3(part6Pos.x, part6Pos.y, z - Time.deltaTime * zSpeed); } } else if (fifthZero && fourthZero && !thirdZero) { float z = part5.transform.localPosition.z; if (z < 0) { thirdZero = true; } else { thirdFull = false; part5.transform.localPosition = new Vector3(part5Pos.x, part5Pos.y, z - Time.deltaTime * zSpeed); } } if (fifthZero && fourthZero && thirdZero && !secondZero) { float z = part4.transform.localPosition.z; if (z < 0) { secondZero = true; } else { secondFull = false; part4.transform.localPosition = new Vector3(part4Pos.x, part4Pos.y, z - Time.deltaTime * zSpeed); } } else if (fifthZero && fourthZero && thirdZero && secondZero && !firstZero) { float z = part3.transform.localPosition.z; if (z < 0) { firstZero = true; } else { firstFull = false; part3.transform.localPosition = new Vector3(part3Pos.x, part3Pos.y, z - Time.deltaTime * zSpeed); } } } } /// /// 平台旋转控制 /// protected override void PlatformControl() { //z轴相对x轴弧度 var radian = Vector3.Dot(part8.transform.forward, Vector3.up); //z轴相对x轴角度 var angle = Mathf.Rad2Deg * radian; //平台一直水平 part8.transform.Rotate(angle, 0, 0); } /// /// 重置变换 /// protected override void OnReset() { base.OnReset(); part8.transform.localPosition = part8Pos; part8.transform.localEulerAngles = part8Rot; } }