using UnityEngine; using System.Collections; using System; using System.Collections.Generic; using UnityEngine.UI; using UnityEngine.EventSystems; public class CeJuScript : MonoBehaviour { void Start () { lineRend = GameObject.Find("CeJu").GetComponent(); line_Hight = GameObject.Find("CeJu1").GetComponent(); line_widht = GameObject.Find("CeJu2").GetComponent(); textHight = GameObject.Find("info1").transform.Find("Name").GetComponent(); textWidht = GameObject.Find("info2").transform.Find("Name").GetComponent(); textMiddle = GameObject.Find("info3").transform.Find("Name").GetComponent(); TextH = GameObject.Find("info1").gameObject; TextW = GameObject.Find("info2").gameObject; TextM = GameObject.Find("info3").gameObject; TwoImage = this.gameObject.transform.Find("Template").Find("两点测距").Find("Background").GetComponent(); MoreImage = this.gameObject.transform.Find("Template").Find("多点测距").Find("Background").GetComponent(); SpaceImage = this.gameObject.transform.Find("Template").Find("空间测距").Find("Background").GetComponent(); } private GameObject TextH; private GameObject TextW; private GameObject TextM; string info; private RaycastHit hit;//射线 public static Vector3 placementPos2;//第二碰撞点 public static Vector3 placementPos;//第一碰撞点 public static Vector3 Pos1_late = new Vector3(0, 0, 0);//第一碰撞点原来的位置 public static Vector3 Pos2_late = new Vector3(0, 0, 0);//第二碰撞点原来的位置 public LayerMask Tm_layerMask = -1; public static bool Pos2Controller = false; private LineRenderer lineRend; private int LengthOflineRenderer = 1; bool kong_1 = true; bool kong_2 = true; bool kong_2_1 = true; bool kong_3 = true; float TheDistance_two; DateTime t1, t2; private int delta_millisecond = 400; List list; float LastDistance; //public Text TheLableText; public Sprite AnXiaSprite; public Sprite ZhengChangSprite; private Image TwoImage; private Image MoreImage; private Image SpaceImage; void Update() { Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); if (EventSystem.current.IsPointerOverGameObject() && (Input.GetMouseButtonDown(0))) { Set(); return; } if (Physics.Raycast(ray, out hit, Mathf.Infinity, Tm_layerMask)) { if (TheFirt) { if (Input.GetMouseButtonDown(0)) { if ((placementPos.x == 0 && placementPos.y == 0 && placementPos.z == 0) || !Pos2Controller) { textHight.gameObject.SetActive(true); textWidht.gameObject.SetActive(false); lineRend.SetVertexCount(1); textHight.text = 0+""; placementPos = new Vector3(hit.point.x, hit.point.y, hit.point.z); textHight.gameObject.transform.parent.position = placementPos; kong_1 = false; KONG = true; lineRend.SetPosition(0, placementPos); Pos2Controller = !Pos2Controller; return; } lineRend.SetVertexCount(2); placementPos2 = new Vector3(hit.point.x, hit.point.y, hit.point.z); lineRend.SetPosition(1, placementPos2); if ((placementPos.x != placementPos2.x) && (Pos2_late.x != placementPos2.x) && (Pos1_late.x != placementPos.x) && Pos2Controller) { textWidht.gameObject.SetActive(true); Pos1_late = placementPos; Pos2_late = placementPos2; Pos2Controller = !Pos2Controller; KONG = false; kong_1 = true; textWidht.text = info; textWidht.transform.parent.position = placementPos2; } } if (!kong_1) { float distance = Vector3.Distance(placementPos, hit.point); info = Math.Round(distance, 2).ToString(); //TheLableText.text = info; } } else if (TheSecond) { if (Input.GetMouseButtonDown(0)) { t2 = DateTime.Now; if (placementPos.x == 0 && placementPos.y == 0 && placementPos.z == 0) { KONG = true; list = new List(); textHight.gameObject.SetActive(true); textWidht.gameObject.SetActive(false); lineRend.SetVertexCount(LengthOflineRenderer); placementPos = new Vector3(hit.point.x, hit.point.y, hit.point.z); textHight.text = 0 + ""; textHight.gameObject.transform.parent.position = placementPos; lineRend.SetPosition(LengthOflineRenderer-1, placementPos); LengthOflineRenderer++; t1 = DateTime.Now; kong_2 = false; list.Add(placementPos); } else if (t2 - t1 > new TimeSpan(0, 0, 0, 0, delta_millisecond)) { if (placementPos.x != placementPos2.x) { lineRend.SetVertexCount(LengthOflineRenderer); placementPos2 = new Vector3(hit.point.x, hit.point.y, hit.point.z); lineRend.SetPosition(LengthOflineRenderer - 1, placementPos2); LengthOflineRenderer++; t1 = t2; list.Add(placementPos2); kong_2 = true; TheDistance_two = 0; for (int i = 0; i < list.Count - 1; i++) { TheDistance_two += Vector3.Distance(list[i], list[i + 1]); } LastDistance = TheDistance_two; kong_2_1 = false; textWidht.gameObject.SetActive(true); textWidht.text = info; textWidht.gameObject.transform.parent.position = placementPos2; } } } if (!kong_2) { TheDistance_two = Vector3.Distance(placementPos, hit.point); info = Math.Round(TheDistance_two, 2).ToString(); //TheLableText.text = info; } if (!kong_2_1) { TheDistance_two = LastDistance + Vector3.Distance(placementPos2, hit.point); info = Math.Round(TheDistance_two, 2).ToString(); //TheLableText.text = info; } } else if (TheThrid) { if (Input.GetMouseButtonDown(0)) { if ((placementPos.x == 0 && placementPos.y == 0 && placementPos.z == 0) || !Pos2Controller) { textHight.gameObject.SetActive(false); textWidht.gameObject.SetActive(false); textMiddle.gameObject.SetActive(false); lineRend.SetVertexCount(1); line_Hight.SetVertexCount(1); line_widht.SetVertexCount(1); placementPos = new Vector3(hit.point.x, hit.point.y, hit.point.z); kong_3 = false; KONG = true; lineRend.SetPosition(0, placementPos); Pos2Controller = !Pos2Controller; return; } lineRend.SetVertexCount(2); placementPos2 = new Vector3(hit.point.x, hit.point.y, hit.point.z); lineRend.SetPosition(1, placementPos2); if ((placementPos.x != placementPos2.x) && (Pos2_late.x != placementPos2.x) && (Pos1_late.x != placementPos.x) && Pos2Controller) { textHight.gameObject.SetActive(true); textWidht.gameObject.SetActive(true); textMiddle.gameObject.SetActive(true); if (placementPos.y < placementPos2.y) { Vector3 vet = new Vector3(placementPos.x, placementPos2.y, placementPos.z); line_Hight.SetVertexCount(1); line_Hight.SetPosition(0, placementPos); line_Hight.SetVertexCount(2); line_Hight.SetPosition(1, vet); Vector3 vet_ = new Vector3(placementPos2.x, placementPos.y, placementPos2.z); line_widht.SetVertexCount(1); line_widht.SetPosition(0, placementPos); line_widht.SetVertexCount(2); line_widht.SetPosition(1, vet_); float distance_hight = Vector3.Distance(placementPos, vet); string info_hight = Math.Round(distance_hight, 2).ToString(); textHight.text = info_hight; textHight.transform.parent.position = vet; float distance_widht = Vector3.Distance(placementPos, vet_); string info_widht = Math.Round(distance_widht, 2).ToString(); textWidht.text = info_widht; textWidht.transform.parent.position = vet_; float distance_middle = Vector3.Distance(placementPos, placementPos2); string info_middle = Math.Round(distance_middle, 2).ToString(); textMiddle.text = info_middle; textMiddle.transform.parent.position = placementPos2; } else { Vector3 vet = new Vector3(placementPos2.x, placementPos.y, placementPos2.z); line_Hight.SetVertexCount(1); line_Hight.SetPosition(0, placementPos2); line_Hight.SetVertexCount(2); line_Hight.SetPosition(1, vet); Vector3 vet_ = new Vector3(placementPos.x, placementPos2.y, placementPos.z); line_widht.SetVertexCount(1); line_widht.SetPosition(0, placementPos2); line_widht.SetVertexCount(2); line_widht.SetPosition(1, vet_); float distance_hight = Vector3.Distance(placementPos2, vet); string info_hight = Math.Round(distance_hight, 2).ToString(); textHight.text = info_hight; textHight.transform.parent.position = vet; float distance_widht = Vector3.Distance(placementPos2, vet_); string info_widht = Math.Round(distance_widht, 2).ToString(); textWidht.text = info_widht; textWidht.transform.parent.position = vet_; float distance_middle = Vector3.Distance(placementPos, placementPos2); string info_middle = Math.Round(distance_middle, 2).ToString(); textMiddle.text = info_middle; textMiddle.transform.parent.position = placementPos; } Pos2Controller = !Pos2Controller; KONG = false; kong_3 = true; placementPos = Vector3.zero; } } if (!kong_3) { float distance = Vector3.Distance(placementPos, hit.point); info = Math.Round(distance, 2).ToString(); //TheLableText.text = info; } } } } bool KONG=false; bool Thirdkong = false; void OnGUI() { if (KONG) { float x = Input.mousePosition.x; float y = Screen.height - Input.mousePosition.y; GUI.Label(new Rect(x - 50, y - 50, 200, 50), info); } } bool TheFirt=false; bool TheSecond=false; bool TheThrid=false; bool One = true; bool Two = true; bool Three = true; private LineRenderer line_Hight; private LineRenderer line_widht; Vector3 TheHight; Vector3 TheWidht; private TextMesh textHight; private TextMesh textWidht; private TextMesh textMiddle; public void Set() { TextH.SetActive(false); TextW.SetActive(false); TextM.SetActive(false); KONG = false; TheFirt = false; TheSecond = false; TheThrid = false; lineRend.gameObject.SetActive(false); line_Hight.gameObject.SetActive(false); line_widht.gameObject.SetActive(false); Thirdkong = false; placementPos2 = Vector3.zero;//第二碰撞点 placementPos = Vector3.zero;//第一碰撞点 TwoImage.sprite = ZhengChangSprite; MoreImage.sprite = ZhengChangSprite; SpaceImage.sprite = ZhengChangSprite; } public void Button(GameObject TheGame) { TheFirt = false; TheSecond = false; TheThrid = false; lineRend.gameObject.SetActive(false); line_Hight.gameObject.SetActive(false); line_widht.gameObject.SetActive(false); Thirdkong = false; TextH.SetActive(true); TextW.SetActive(true); TextM.SetActive(true); textHight.gameObject.SetActive(false); textWidht.gameObject.SetActive(false); textMiddle.gameObject.SetActive(false); placementPos2=Vector3.zero;//第二碰撞点 placementPos=Vector3.zero;//第一碰撞点 TwoImage.sprite = ZhengChangSprite; MoreImage.sprite = ZhengChangSprite; SpaceImage.sprite = ZhengChangSprite; if (TheGame.name.Equals("两点测距")) { if (One) { TheFirt = true; KONG = false; One = false; Two = true; Three = true; lineRend.gameObject.SetActive(true); lineRend.SetVertexCount(0); TwoImage.sprite = AnXiaSprite; MoreImage.sprite = ZhengChangSprite; SpaceImage.sprite = ZhengChangSprite; } else { lineRend.gameObject.SetActive(false); One = true; KONG = false; TwoImage.sprite = ZhengChangSprite; } } else if (TheGame.name.Equals("多点测距")) { if (Two) { TheSecond = true; KONG = false; LengthOflineRenderer = 1; placementPos = new Vector3(0, 0, 0); TheDistance_two = 0; LastDistance = 0; One = true; Two = false; Three = true; lineRend.gameObject.SetActive(true); lineRend.SetVertexCount(0); kong_2 = true; kong_2_1 = true; TwoImage.sprite = ZhengChangSprite; MoreImage.sprite = AnXiaSprite; SpaceImage.sprite = ZhengChangSprite; } else { lineRend.gameObject.SetActive(false); Two = true; KONG = false; MoreImage.sprite = ZhengChangSprite; } } else if (TheGame.name.Equals("空间测距")) { if (Three) { TheThrid = true; KONG = false; One = true; Two = true; Three = false; lineRend.gameObject.SetActive(true); lineRend.SetVertexCount(0); line_Hight.SetVertexCount(0); line_widht.SetVertexCount(0); line_Hight.gameObject.SetActive(true); line_widht.gameObject.SetActive(true); TwoImage.sprite = ZhengChangSprite; MoreImage.sprite = ZhengChangSprite; SpaceImage.sprite = AnXiaSprite; } else { lineRend.gameObject.SetActive(false); Three = true; KONG = false; line_Hight.gameObject.SetActive(false); line_widht.gameObject.SetActive(false); SpaceImage.sprite = ZhengChangSprite; } } } }