Exemple #1
0
        public static DanmakuField FindClosest(Vector2 position)
        {
            if (_fields == null)
            {
                _fields = new List <DanmakuField>();
                _fields.AddRange(FindObjectsOfType <DanmakuField>());
            }
            if (_fields.Count == 0)
            {
                DanmakuField encompassing =
                    new GameObject("Danmaku Field").AddComponent <DanmakuField>();
                encompassing.useClipBoundary = false;
                _fields.Add(encompassing);
            }
            if (_fields.Count == 1)
            {
                return(_fields[0]);
            }
            DanmakuField closest = null;
            float        minDist = float.MaxValue;

            foreach (var field in _fields)
            {
                Vector2 diff     = field.bounds.Center - position;
                float   distance = diff.sqrMagnitude;
                if (distance >= minDist)
                {
                    continue;
                }
                closest = field;
                minDist = distance;
            }
            return(closest);
        }
Exemple #2
0
 private void Awake()
 {
     boundary = GetComponent <BoxCollider2D>();
     if (field == null)
     {
         print("No field provided, searching in ancestor GameObjects...");
         field = GetComponentInParent <DanmakuField>();
     }
     if (field == null)
     {
         Debug.LogError("Field Boundary without a DanmakuField");
     }
     else
     {
         UpdatePosition();
     }
 }