很久以前就觉得LeapMotion中的不少源码挺不错,今天终于用到了其中一个方法,直接copy下来参考。
// Finds the closest grabbable object within range of the pinch.
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;
}