从位置找到GameObject上最近的点是什么?

4
我希望从吊在起重机上的负载中找到距离最近的起重机臂部分上的一个点,起重机臂上装有BoxCollider,并且我正在使用Physics.overlap方法。
你如何找到一个游戏对象上距离源对象最近的点?
[1]: https://istack.dev59.com/ZBRqm.webpenter image description here

你有尝试过什么吗?我们可以看一些图片吗? - Sharad Khanna
也许图片可以帮助理解我的问题。 - UnityDev
1个回答

9
你可以使用 Collider.ClosestPointCollider.ClosestPointOnBounds 来实现。如果你想要检查自定义的位置和旋转而不是使用碰撞器的位置和旋转,则可以使用 Physics.ClosestPoint

这三个函数的示例用法:

public Vector3 sourceObject;
public Collider targetCollider;

// Update is called once per frame
void Update()
{
    //Method 1
    Vector3 closestPoint = targetCollider.ClosestPoint(sourceObject);

    //Method 2
    Vector3 closestPointInBounds = targetCollider.ClosestPointOnBounds(sourceObject);

    //Method 3
    Vector3 pos = targetCollider.transform.position;
    Quaternion rot = targetCollider.transform.rotation;
    Vector3 closestPointCollider = Physics.ClosestPoint(sourceObject, targetCollider, pos, rot);
}

closestPointCollider 返回一个在起重机上方的起重机臂部分之外的点。 - UnityDev

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接