判断两个物体之间的距离

方法一:

01var aa:GameObject;//A
02var bb:GameObject;//B
03var dis: float;
04function Update () {
05  dis=Vector3.Distance(bb.transform.position,aa.transform.position);
06}
07 
08function OnGUI () {
09  GUI.Label (Rect (10,40,200,20), dis + "m");
10}

==================================
方法二:

  
  
01var startPoint:Vector3;
02var endPoint:Vector3;
03var showDistance:float = 0.0;
04var isStart:boolean;
05var isOver:boolean;
06var isFollow:boolean;
07var mLine:LineRenderer;
08var aMaterial:Material;
09var mx:float = 0.0;
10var my:float = 0.0;
11 
12function Start ()
13{
14   mLine = this.gameObject.AddComponent(LineRenderer);
15   mLine.SetWidth(1, 1);
16   mLine.SetVertexCount(2);
17   mLine.SetColors (Color.yellow,Color.yellow);
18   //aMaterial.color = Color.red;
19   mLine.material = aMaterial;
20   mLine.material.color = Color (0, 1, 0, 0.25);
21   mLine.renderer.enabled = true;
22}
23 
24function Update () {
25//print(Input.mousePosition);
26if (Input.GetButtonDown ("Fire1")) {
27   showDistance = 0;
28   startPoint = Vector3.zero;
29   endPoint = Vector3.zero;
30   isFollow = true;
31   var sRay = camera.ScreenPointToRay (Input.mousePosition);
32   var sHit : RaycastHit;
33   if (Physics.Raycast (sRay,sHit)) {
34    //Debug.DrawRay (ray.origin, ray.direction * 10, Color.yellow);
35    //Debug.DrawLine (sRay.origin, sHit.point);
36    startPoint = sHit.point;
37    print("startPoint:" +sHit.point);
38    mLine.SetPosition(0,startPoint);
39    isStart = true;
40    isOver = false;
41   }else{
42    print("");
43   }
44}
45 
46if(isStart && !isOver){
47   var mRay = camera.ScreenPointToRay (Input.mousePosition);
48   var mHit : RaycastHit;
49   if (Physics.Raycast (mRay,mHit)) {
50    endPoint = mHit.point;
51    print("mPoint:" +mHit.point);
52    mLine.SetPosition(1,endPoint);
53    showDistance = Vector3.Distance(endPoint,startPoint);
54   }else{
55    print("");
56   }
57}
58 
59if (Input.GetButtonUp ("Fire1")) {
60   var eRay = camera.ScreenPointToRay (Input.mousePosition);
61   var eHit : RaycastHit;
62   isFollow = false;
63   if (Physics.Raycast(eRay,eHit)) {
64    //Debug.DrawRay (ray.origin, ray.direction * 10, Color.yellow);
65    //Debug.DrawLine (eRay.origin, eHit.point);
66    endPoint = eHit.point;
67    print("endPoint:" +eHit.point);
68    isOver = true;
69    isStart = false;
70    showDistance = Vector3.Distance(endPoint,startPoint);
71    //Debug.DrawLine (startPoint,endPoint, Color.red);
72    mLine.SetPosition(1,endPoint);
73   }else{
74    print("");
75   }
76}
77}
78 
79 
80 
81 
82function OnGUI () {
83//GUI.TextArea (Rect (300, 80, 50, 20), showDistance.ToString());
84if(isFollow){
85   mx = Input.mousePosition.x + 5;
86   my = Screen.height-Input.mousePosition.y - 20;
87}
88GUI.Label(Rect (mx,my, 100, 20), showDistance.ToString() + " M");
89}

==============================================
方法三

var a:GameObject;  

  
  
01var b:GameObject; 
02//a,b 分别定义两个公共GameObject对象// 
03function Update () { 
04if (a==null || b==null) { 
05print("a or b = null"); 
06return
07//如果a或者是b实例化失败就跳出函数 
08
09var m:Vector3; 
10var n:Vector3; 
11//m,n定义两个私有 Vector3类型 
12m=a.transform.position; 
13n=b.transform.position; 
14//赋m,n予a,b的位置 
15print(Vector3.Distance(m,n)); 
16//函数Vector3.Distance计算a,b间距,并在控制台输出 
17}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值