コード例 #1
0
    public static Transform GetNextTransformReference(Transform previousReference, TransformRuntimeSet transformSet)
    {
        int randomIndex = (int)Random.Range(0, transformSet.Items.Count);

        for (int i = 0; i < transformSet.Items.Count; i++)
        {
            if (!previousReference || previousReference != transformSet.Items[randomIndex])
            {
                previousReference = transformSet.Items[randomIndex];
                return(previousReference);
            }
            else
            {
                randomIndex = (randomIndex + 1) % transformSet.Items.Count;
            }
        }
        return(null);
    }
コード例 #2
0
    public static Transform GetNextClosestTransformReference(Transform previousReference, TransformRuntimeSet transformSet, Transform entity)
    {
        int   randomIndex = (int)Random.Range(0, transformSet.Items.Count);
        float distToRef   = Mathf.Infinity;

        for (int i = 0; i < transformSet.Items.Count; i++)
        {
            float currDist = Vector3.Distance(entity.position, transformSet.Items[randomIndex].position);
            if (!previousReference || previousReference != transformSet.Items[randomIndex])
            {
                if (currDist < distToRef)
                {
                    previousReference = transformSet.Items[randomIndex];
                    distToRef         = currDist;
                    return(previousReference);
                }
                else
                {
                    randomIndex = (randomIndex + 1) % transformSet.Items.Count;
                }
            }
            else
            {
                randomIndex = (randomIndex + 1) % transformSet.Items.Count;
            }
        }
        return(null);
    }