You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
431 lines
18 KiB
431 lines
18 KiB
3 years ago
|
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<LineRenderer>();
|
||
|
line_Hight = GameObject.Find("CeJu1").GetComponent<LineRenderer>();
|
||
|
line_widht = GameObject.Find("CeJu2").GetComponent<LineRenderer>();
|
||
|
textHight = GameObject.Find("info1").transform.Find("Name").GetComponent<TextMesh>();
|
||
|
textWidht = GameObject.Find("info2").transform.Find("Name").GetComponent<TextMesh>();
|
||
|
textMiddle = GameObject.Find("info3").transform.Find("Name").GetComponent<TextMesh>();
|
||
|
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<Image>();
|
||
|
MoreImage = this.gameObject.transform.Find("Template").Find("多点测距").Find("Background").GetComponent<Image>();
|
||
|
SpaceImage = this.gameObject.transform.Find("Template").Find("空间测距").Find("Background").GetComponent<Image>();
|
||
|
}
|
||
|
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<Vector3> 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<Vector3>();
|
||
|
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;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|