Example #1
0
    // Update is called once per frame
    void Update()
    {
        if (!building.IsActivated)
        {
            return;
        }

        if (damageTimer.Check(Time.deltaTime))
        {
            Kaban minHealthKaban    = null;
            var   closeEnoughKabans = GameObject.FindGameObjectsWithTag("Kaban")
                                      .Select(x => x.GetComponent <Kaban>())
                                      .Where(CanBeShooted);
            foreach (var kaban in closeEnoughKabans)
            {
                if (minHealthKaban == null || kaban.currentHealth < minHealthKaban.currentHealth)
                {
                    minHealthKaban = kaban;
                }
            }
            shootedKaban = minHealthKaban;

            if (shootedKaban != null)
            {
                shootedKaban.TakeDamage(damage);
            }
        }

        if (shootedKaban != null && shootedKaban.gameObject)
        {
            shootRayRenderer.SetPosition(0, transform.position);
            shootRayRenderer.SetPosition(1, shootedKaban.transform.position);
            shootRayRenderer.enabled = true;
        }
        else
        {
            shootRayRenderer.enabled = false;
        }
    }
Example #2
0
 private bool CanBeShooted(Kaban kaban)
 => Vector3.Distance(kaban.transform.position, transform.position) < shootDistance;