查看: 1748|回复: 0
打印 上一主题 下一主题

[其他] 判断两个物体之间的距离的代码

[复制链接]

2317

主题

54

听众

2万

积分

资深设计师

Rank: 7Rank: 7Rank: 7

纳金币
20645
精华
62

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

跳转到指定楼层
楼主
发表于 2014-12-31 21:34:08 |只看该作者 |倒序浏览

方法1
  1. 01var aa:GameObject;//A

  2. 02var bb:GameObject;//B

  3. 03var dis: float;

  4. 04function Update () {

  5. 05  dis=Vector3.Distance(bb.transform.position,aa.transform.position);

  6. 06}

  7. 07

  8. 08function OnGUI () {

  9. 09  GUI.Label (Rect (10,40,200,20), dis + “m”);

  10. 10}
复制代码
方法2
  1. 01var startPoint:Vector3;

  2. 02var endPoint:Vector3;

  3. 03var showDistance:float = 0.0;

  4. 04var isStart:boolean;

  5. 05var isOver:boolean;

  6. 06var isFollow:boolean;

  7. 07var mLine:LineRenderer;

  8. 08var aMaterial:Material;

  9. 09var mx:float = 0.0;

  10. 10var my:float = 0.0;

  11. 11

  12. 12function Start ()

  13. 13{

  14. 14   mLine = this.gameObject.AddComponent(LineRenderer);

  15. 15   mLine.SetWidth(1, 1);

  16. 16   mLine.SetVertexCount(2);

  17. 17   mLine.SetColors (Color.yellow,Color.yellow);

  18. 18   //aMaterial.color = Color.red;

  19. 19   mLine.material = aMaterial;

  20. 20   mLine.material.color = Color (0, 1, 0, 0.25);

  21. 21   mLine.renderer.enabled = true;

  22. 22}

  23. 23

  24. 24function Update () {

  25. 25//print(Input.mousePosition);

  26. 26if (Input.GetButtonDown (“Fire1”)) {

  27. 27   showDistance = 0;

  28. 28   startPoint = Vector3.zero;

  29. 29   endPoint = Vector3.zero;

  30. 30   isFollow = true;

  31. 31   var sRay = camera.ScreenPointToRay (Input.mousePosition);

  32. 32   var sHit : RaycastHit;

  33. 33   if (Physics.Raycast (sRay,sHit)) {

  34. 34    //Debug.DrawRay (ray.origin, ray.direction * 10, Color.yellow);

  35. 35    //Debug.DrawLine (sRay.origin, sHit.point);

  36. 36    startPoint = sHit.point;

  37. 37    print(“startPoint:” +sHit.point);

  38. 38    mLine.SetPosition(0,startPoint);

  39. 39    isStart = true;

  40. 40    isOver = false;

  41. 41   }else{

  42. 42    print(“”);

  43. 43   }

  44. 44}

  45. 45

  46. 46if(isStart && !isOver){

  47. 47   var mRay = camera.ScreenPointToRay (Input.mousePosition);

  48. 48   var mHit : RaycastHit;

  49. 49   if (Physics.Raycast (mRay,mHit)) {

  50. 50    endPoint = mHit.point;

  51. 51    print(“mPoint:” +mHit.point);

  52. 52    mLine.SetPosition(1,endPoint);

  53. 53    showDistance = Vector3.Distance(endPoint,startPoint);

  54. 54   }else{

  55. 55    print(“”);

  56. 56   }

  57. 57}

  58. 58

  59. 59if (Input.GetButtonUp (“Fire1”)) {

  60. 60   var eRay = camera.ScreenPointToRay (Input.mousePosition);

  61. 61   var eHit : RaycastHit;

  62. 62   isFollow = false;

  63. 63   if (Physics.Raycast(eRay,eHit)) {

  64. 64    //Debug.DrawRay (ray.origin, ray.direction * 10, Color.yellow);

  65. 65    //Debug.DrawLine (eRay.origin, eHit.point);

  66. 66    endPoint = eHit.point;

  67. 67    print(“endPoint:” +eHit.point);

  68. 68    isOver = true;

  69. 69    isStart = false;

  70. 70    showDistance = Vector3.Distance(endPoint,startPoint);

  71. 71    //Debug.DrawLine (startPoint,endPoint, Color.red);

  72. 72    mLine.SetPosition(1,endPoint);

  73. 73   }else{

  74. 74    print(“”);

  75. 75   }

  76. 76}

  77. 77}

  78. 78

  79. 79

  80. 80

  81. 81

  82. 82function OnGUI () {

  83. 83//GUI.TextArea (Rect (300, 80, 50, 20), showDistance.ToString());

  84. 84if(isFollow){

  85. 85   mx = Input.mousePosition.x + 5;

  86. 86   my = Screen.height-Input.mousePosition.y - 20;

  87. 87}

  88. 88GUI.Label(Rect (mx,my, 100, 20), showDistance.ToString() + “ M”);

  89. 89}
复制代码
分享到: QQ好友和群QQ好友和群 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
转播转播0 分享淘帖0 收藏收藏0 支持支持0 反对反对0
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

手机版|纳金网 ( 闽ICP备2021016425号-2/3

GMT+8, 2024-11-17 12:55 , Processed in 0.553803 second(s), 29 queries .

Powered by Discuz!-创意设计 X2.5

© 2008-2019 Narkii Inc.

回顶部