天津23维预案
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.
 
 
 
 
 
 

430 lines
18 KiB

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;
}
}
}
}