【发布时间】:2022-11-16 07:48:37
【问题描述】:
我正在制作游戏,我需要从最接近另一个 GameObject 的列表中找到 2 GameObjects,它也在同一个列表中,但我不希望它返回超过 2 GameObjects 或返回我正在检查的 GameObject。
这是我要输入的内容:
GameObject[] objects, GameObject currentObject
我希望它输出:
GameObject[] closestObjects, GameObject currentObject
我试过了:
GameObject [ ] GetClosestPaths ( GameObject [ ] paths, GameObject pathToTest )
{
GameObject[] bestTargets = new GameObject[2];
float closestDistanceSqr = Mathf.Infinity;
Vector3 currentPosition = pathToTest.transform.position;
Transform[] pathTransforms = new Transform[paths.Length];
for ( int i = 0; i < paths.Length; i++ )
{
pathTransforms [ i ] = paths [ i ].transform;
}
for ( int i = 0; i < pathTransforms.Length; i++ )
{
if ( pathTransforms [ i ].position != currentPosition && paths [ i ] != pathToTest )
{
Transform potentialTarget = pathTransforms[i];
Vector3 directionToTarget = potentialTarget.position - currentPosition;
float dSqrToTarget = directionToTarget.sqrMagnitude;
if ( dSqrToTarget < closestDistanceSqr )
{
if ( bestTargets [ 0 ] == null )
{
bestTargets [ 0 ] = paths [ i ];
}
closestDistanceSqr = dSqrToTarget;
if ( paths [ i ].transform.position != bestTargets [ 0 ].transform.position )
{
bestTargets [ 0 ] = paths [ i ];
}
else
{
bestTargets [ 1 ] = paths [ i ];
}
}
}
}
return bestTargets;
}
paths是GameObject,pathToTest是currentObject,bestTargets是closestObjects。
我在 Stackoverflow 上得到了这个,但这根本不起作用。 我希望有人能提供帮助,否则这将成为一堆未完成的项目。
【问题讨论】:
-
试试 Vector3.Distance