コード例 #1
0
    /*void OnDrawGizmosSelected()
     * {
     * Gizmos.color = Color.black;
     * Gizmos.DrawWireSphere(transform.position, Range.BaseValue);
     * }*/

    /*----------------------- UTILITY FUNCTIONS FOR ALL TOWERS -----------------------*/
    #region UTILITY_FUNCTIONS_ALL_TOWERS

    public Collider[] Targets(Transform towerTransform, Tower.TargetType type, Collider[] inRange, int count = default(int))
    {
        switch (type)
        {
        case Tower.TargetType.Closest:
        {
            inRange = inRange.OrderBy(x => Vector3.Distance(towerTransform.position, x.transform.position)).ToArray();
            return(inRange.Take(count).ToArray());
        }

        case Tower.TargetType.Lowest:
        {
            inRange = inRange.OrderBy(x => x.GetComponent <Enemy>().Health).ToArray();
            return(inRange.Take(count).ToArray());
        }

        case Tower.TargetType.Furthest:
        {
            inRange = inRange.OrderBy(x => Vector3.Distance(towerTransform.position, x.transform.position)).ToArray();
            inRange.Reverse();
            return(inRange.Take(count).ToArray());
        }

        case Tower.TargetType.Around:
        {
            inRange = inRange.OrderBy(x => Vector3.Distance(towerTransform.position, x.transform.position)).ToArray();
            return(inRange);
        }
        }
        return(null);
    }
コード例 #2
0
 private void Awake()
 {
     tower.TargetTower = this.gameObject;
     this.name         = tower.name;
     damage            = tower.Damage;
     range             = tower.Range;
     fireRate          = tower.FireRate;
     cooldown          = tower.PowerCooldown;
     procChance        = tower.ProcChance;
     targetableLayers  = tower.targetableLayers;
     targettype        = tower.targettype;
     if (tower.AestheticMesh)
     {
         this.GetComponent <MeshFilter>().mesh = tower.AestheticMesh.GetComponent <MeshFilter>().sharedMesh;
     }
 }