当前位置: 首页 > 知识库问答 >
问题:

如何在统一中找到数组中第二接近的对象?[重复]

呼延源
2023-03-14

我在团结中挣扎。我想创建一个脚本,能够找到离玩家最近的对象(我设法做到了),以及离玩家第二近的对象。我的问题是如何修改此代码,使其也适用于第二个对象?

public class Robot2 : MonoBehaviour
{
    public GameObject cameraHolder;
    public Transform[] objects;
    private Transform nearestObj;
    private Transform secondObj;
    void Update()
    {
        float lowestDist = Mathf.Infinity;
        nearestObj = null;
        secondObj = null;
    
        foreach(Transform obj in objects)
        {
            float dist = Vector3.Distance(transform.position, obj.position);
            if(dist < lowestDist)
            {
                lowestDist = dist;
                nearestObj = obj;
            }
        } 
        Debug.DrawLine(transform.position, nearestObj.transform.position, Color.red); 
        cameraHolder.transform.position = nearestObj.transform.position;
    }
}

共有2个答案

通鸿风
2023-03-14

您可以这样做:

float lowestDistance = Mathf.Infinity;
float nextLowestDistance = Mathf.Infinity;
nearestObject = null;
secondObject = null;

foreach ( Transform object in objects )
{
    float dist = Vector3.Distance( object.position, transform.position );
    if ( dist < lowestDistance )
    {
        if ( lowestDistance < nextLowestDistance )
        {
            nextLowestDistance = lowestDistance;
            secondObject = nearestObject;
        }
        lowestDistance = dist;
        nearestObject = object;
    }
    else if ( dist < nextLowestDistance )
    {
       nextLowestDistance = dist;
       secondObject = object;
    }
}
高德水
2023-03-14

你可以像下面的代码一样使用LINQ:

Objects.ToList().OrderBy(o => Vector3.Distance(transform.position, o.position))[1]

或者

Objects.ToList().OrderByDescending(o => Vector3.Distance(transform.position, o.position))[1]
 类似资料:
  • 问题内容: 问题 : 给定 +ve 和 -ve 整数数组,我们需要在数组中找到总和接近零的一对。 例如: 问题答案: 您可以检查每一对数字并找到最小和。 java代码: 解决方案2: 对数组进行排序。 * 我们将维护两个索引,一个在开头(l=0),一个在结尾(r=n-1) 迭代直到 l < r * 计算 arr[l] + arr[r] 的总和 * 如果 abs (sum) < abs (minSu

  • 问题内容: 我需要知道在对象数组中查找第二大元素的方法。例如 如果存在Book类的一系列对象,这些对象的属性如书名,价格,库存数量 我们如何列出价格第二高的书以及其他属性,例如名称和库存数量 问题答案: 做一个的从它,它的排序使用,并采取元素索引1。

  • 我试图确定一个关键字名称是否存在于我的对象数组中。例如,我如何验证名称为name的键是否等于在函数调用中传递的参数?下面是进一步澄清的代码。

  • 问题内容: Swift在Underscore.js中是否有类似_.findWhere的内容? 我有一个类型为struct的数组,想检查array是否包含属性等于的struct对象。 尝试使用,但它们仅适用于基本类型,例如或。引发有关不符合协议之类的错误。 问题答案: FWIW,如果您不想使用自定义功能或扩展名,则可以: 首先生成数组,然后从中生成数组。 如果阵列很大,则可能需要执行以下操作: 或许

  • 所以这个问题以前被问过,但我的情况有点不同,因为我已经尝试了这个网站中建议的所有解决方案,我有一个多提及数组: 我还有另一个小数组: 我只想找到与这个“dup”在同一行的“original”。到目前为止,我尝试了查找、过滤和grep,但这些都没有解决我的问题。 我尝试过的代码:

  • 我正在学习JS。假设我有以下对象数组: 注意,Nancy出现了两次(只改变了年龄)。假设我只想输出唯一的名称。如何输出上述对象数组,而不重复?ES6答案非常受欢迎。 相关(找不到在对象上使用的好方法): 从JavaScript数组中删除重复项 在JavaScript数组中查找重复值的最简单方法 编辑这是我尝试的。它适用于字符串,但我不知道如何使它适用于对象: