Beispiel #1
0
    public void GunUpdate(float dt)
    {
        if (gunHeat <= 0 && activated)
        {
            if (gunTarget == null ||
                Vector3.Distance(gunTarget.transform.position, transform.position) > gunRange)
            {
                EnemyMoter enemy = EnemyManager.Instance.getClosestEnemy(transform.position);
                if (enemy != null &&
                    Vector3.Distance(enemy.transform.position, transform.position) <= gunRange)
                {
                    gunTarget = enemy;
                }
                else
                {
                    gunTarget = null;
                }
            }

            if (gunTarget != null && BaseManager.Instance.Energy >= shotEnergyCost)
            {
                gunTarget.TakeDamage(damage);
                BaseManager.Instance.DrainEnergy(shotEnergyCost);
                gunHeat = gunCooldown;
                shotRenderer.SetPosition(1, gunTarget.transform.position);
                shotRenderer.enabled = true;
                CancelInvoke();
                Invoke("ShutoffShotRenderer", shotRenderTime);
            }
        }
        else if (gunHeat > 0)
        {
            gunHeat -= dt;
        }
    }
Beispiel #2
0
    void SpawnEnemy()
    {
        GameObject enemy = Instantiate(enemyPrefab, spawnPoint.transform.position, spawnPoint.transform.rotation);
        //    enemy.transform.position = spawnPoint.position;
        EnemyMoter script = enemy.GetComponent <EnemyMoter>();

        EnemyManager.Instance.enemies.Add(script);
    }
    public EnemyMoter getClosestEnemy(Vector3 pos)
    {
        EnemyMoter ret     = null;
        float      minDist = float.MaxValue;
        float      thisDist;

        foreach (EnemyMoter enemy in enemies)
        {
            thisDist = Vector3.Distance(enemy.transform.position, pos);
            if (thisDist < minDist)
            {
                ret     = enemy;
                minDist = thisDist;
            }
        }
        return(ret);
    }