得到指定范围内最近物体

很久以前就觉得LeapMotion中的不少源码挺不错,今天终于用到了其中一个方法,直接copy下来参考。

// Finds the closest grabbable object within range of the pinch.

  protected Collider FindClosestGrabbableObject(Vector3 pinch_position) {
    Collider closest = null;
    float closest_sqr_distance = grabObjectDistance * grabObjectDistance;
    Collider[] close_things =
        Physics.OverlapSphere(pinch_position, grabObjectDistance, grabbableLayers);


    for (int j = 0; j < close_things.Length; ++j) {
      float sqr_distance = (pinch_position - close_things[j].transform.position).sqrMagnitude;


      if (close_things[j].GetComponent<Rigidbody>() != null && sqr_distance < closest_sqr_distance &&
          !close_things[j].transform.IsChildOf(transform) &&
          close_things[j].tag != "NotGrabbable") {


        GrabbableObject grabbable = close_things[j].GetComponent<GrabbableObject>();
        if (grabbable == null || !grabbable.IsGrabbed()) {
          closest = close_things[j];
          closest_sqr_distance = sqr_distance;
        }
      }
    }


    return closest;
  }

猜你喜欢

转载自blog.csdn.net/qq_36927190/article/details/80487577
今日推荐