コード例 #1
0
 // Update is called once per frame
 void Update()
 {
     if (!taken)
     {
         Hugger availableHugger = FindAvailableHugger();
         if (availableHugger)
         {
             hugger = availableHugger;
             hugger.WantsToHug(this.gameObject);
             taken = true;
         }
     }
 }
コード例 #2
0
    Hugger FindAvailableHugger()
    {
        Collider[] nearHuggers    = Physics.OverlapSphere(transform.position, attractionDistance, huggersLayer);
        Hugger     selectedHugger = null;

        foreach (var hugger in nearHuggers)
        {
            Hugger huggerScript = hugger.GetComponent <Hugger>();

            if (huggerScript.IsAvailableForHug()) // only if is idle now
            {
                var random = Random.Range(0, 1000 - radarPower);
                if (random == 0)
                {
                    selectedHugger = huggerScript;
                    break;
                }
            }
        }

        return(selectedHugger);
    }
コード例 #3
0
    private void OnEnable()
    {
        Hugger hg = (Hugger)target;

        Append[] apds = hg.GetComponentsInChildren <Append>();
        if (apds.Length == 0)
        {
            apds = new Append[1]
            {
                new GameObject("Append0", typeof(Append)).GetComponent <Append>()
            };
            apds[0].transform.parent = hg.transform;
            apds[0].LimitedGyre      = new Append.LimitedRotation(0f, 360f, 180f, apds[0].transform);
        }
        else
        {
            /* for(int i = 0; i<apds.Length; i++)
             * {
             *   apds[i].transform.parent = hg.transform;
             *   apds[i].LimitedGyre = new Append.LimitedRotation(Mathf.Round(360f / apds.Length * i), Mathf.Round(360f /apds.Length * (i+1)), Mathf.Round(360f / apds.Length * (2*i + 1)/2f), apds[i].transform);
             *   apds[i].transform.rotation = Quaternion.Euler(0f, 0f, 180f + apds[i].LimitedGyre.Current);
             * }*/
            for (int i = 0; i < apds.Length; i++)
            {
                apds[i].transform.rotation = Quaternion.Euler(0f, 0f, 180f + apds[i].LimitedGyre.Current);
            }
        }
        hg.Appends = apds;
        for (int i = 0; i < apds.Length; i++)
        {
            hg.Appends[i].ParentHugger = hg;
            hg.Appends[i].InitiateList();
            EditorUtility.SetDirty(hg.Appends[i]);
        }
        EditorUtility.SetDirty(hg);
    }
コード例 #4
0
 public void LiberateHuggingPoint()
 {
     taken  = false;
     hugger = null;
 }