示例#1
0
文件: Units.cs 项目: kaifarick/RTS
    protected virtual void Attack(float AttackDistance, string layerMask)
    {
        mask = LayerMask.GetMask(layerMask);
        var   cols           = Physics.OverlapSphere(transform.position, range, mask.value);
        float searchDistance = Mathf.Infinity;

        if (cols.Length > 0)
        {
            Collider currentCollider = cols[0];

            foreach (Collider col in cols)
            {
                float currentDist = Vector3.Distance(transform.position, col.transform.position);
                if (currentDist < searchDistance)
                {
                    currentCollider = col;
                    searchDistance  = currentDist;
                }
            }

            if (searchDistance < AttackDistance)
            {
                if (timeBetweenAtack <= 0)
                {
                    try
                    {
                        HammerEnemy units = currentCollider.gameObject.GetComponent <HammerEnemy>();
                        units.GetDamage(Damage);
                    }
                    catch
                    {
                        CrossbowEnemy crossbowEnemy = currentCollider.gameObject.GetComponent <CrossbowEnemy>();
                        crossbowEnemy.GetDamage(Damage);
                    }
                    timeBetweenAtack = 2f;
                }
                else
                {
                    timeBetweenAtack -= Time.deltaTime;
                }
            }
        }
    }