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