override protected void shoot()
    {
        //Shoot shell at an arc
        MortarShell shell = Instantiate(mortarShell, bulletSpawnPoint.position, bulletSpawnPoint.rotation);

        shell.setShot(shellDamage, targetVelocity, shellDetonateHeight);
        shootParticles.Play();
    }
Beispiel #2
0
    public override void ExecuteFire()
    {
        GameObject obj = Instantiate(projectilePrefab.gameObject) as GameObject;

        obj.transform.position = shootPos.position;

        obj.transform.rotation = Quaternion.LookRotation(target.transform.position - obj.transform.position);

        MortarShell shell = obj.GetComponent <MortarShell>();

        shell.landingPos = target.transform.position;
        shell.SetDamage(damage);
        shell.StartCoroutine(shell.SimulateProjectile());

        if (shootSound != null)
        {
            AudioManager.instance.PlayAudio(shootSound);
        }
        StartCoroutine(FireDelay());
    }
Beispiel #3
0
    public override void Fire()
    {
        AudioManager.instance.PlayMortar(fire);
        GameObject  shell = Instantiate(mortarShellPrefab, transform);
        MortarShell ms    = shell.GetComponent <MortarShell>();

        ms.damage          = damage * (1 + (UpgradeManager._instance.damageUpgradeLevel * UpgradeManager._instance.damageUpgrade));
        ms.explosionRadius = explosionRadius;

        ms.rigidbody2D.AddForce(new Vector2(0.42f, 0.9f).normalized *UnityEngine.Random.Range(250f, 400f));

        if (UnityEngine.Random.Range(0f, 1f) < UpgradeManager._instance.mortarMultishotUpgradeLevel * UpgradeManager._instance.mortarMultishotUpgrade)
        {
            GameObject shell2 = Instantiate(mortarShellPrefab, transform);
            ms                 = shell2.GetComponent <MortarShell>();
            ms.damage          = damage * (1 + (UpgradeManager._instance.damageUpgradeLevel * UpgradeManager._instance.damageUpgrade));
            ms.explosionRadius = explosionRadius;

            ms.rigidbody2D.AddForce(new Vector2(0.42f, 0.9f).normalized *UnityEngine.Random.Range(250f, 400f));
        }
    }
Beispiel #4
0
        public void InstantiatePrefab(Vector3 throw_point)
        {
            SpawnPool level_pool  = PoolManager.Pools[CurrentLevel.GetCurrentLevelPoolName()];
            Transform unit_entity = level_pool.Spawn(projectile, transform.position, transform.rotation);

            if (!random)
            {
                CannonBall cannon_ball = unit_entity.GetComponent <CannonBall>();
                cannon_ball.coordinate        = throw_point;
                cannon_ball.movement_speed    = movement_speed;
                cannon_ball.catapult_position = transform.position;
                cannon_ball.SetProjectile(area_of_effect, base_damage, damage_distance_factor);
            }
            else
            {
                MortarShell mortar_shell = unit_entity.GetComponent <MortarShell>();
                mortar_shell.coordinate_on_platform = throw_point;
                mortar_shell.movement_speed         = movement_speed;
                mortar_shell.platform = platform;
                mortar_shell.SetProjectile(area_of_effect, base_damage, damage_distance_factor);
            }
        }