Exemplo n.º 1
0
    protected override void HoldingItem(bool use, bool startUse, bool endUse, bool doubleUse)
    {
        //update the time before the next missle can be shot
        if (shotTimer > 0)
        {
            shotTimer--;
        }
        //if its time to shoot the next missle and the holder is pressing this Item's key,
        //then create a new missle infront of the holder
        else if (use)
        {
            //create the missle infront of the holder
            HomingMissile missile = (HomingMissile)level.CreateObject("HomingMissilePF",
                                                                      holder.position + offset.Rotate(holder.angle), holder.angle, holder.velocity);

            //set the missle's initial settings
            missile.damage         = missileDamge;
            missile.acceleration   = missileAcceleration;
            missile.turnSpeed      = missileTurnSpeed;
            missile.timeToLiveSecs = missleLifeTimeSecs;
            missile.team           = holder.team;
            missile.color          = color;
            missile.maxSpeed       = missileMaxSpeed;

            //reset the timer to shoot the next missle
            shotTimer = (int)(shootTimeSecs * level.updatesPerSec);

            level.score += USE_POINTS;
        }
    }
Exemplo n.º 2
0
    void ShootHomingMissile(Transform target)
    {
        GameObject    go            = (GameObject)Instantiate(homingMissileGO, transform.position, Quaternion.identity);
        HomingMissile homingMissile = go.GetComponent <HomingMissile>();

        homingMissile.SetTarget(target);
    }
Exemplo n.º 3
0
    override public void activate(WheelVehicle user)
    {
        Debug.Log("called act");
        HomingMissile clone = Instantiate(prefab, user.gameObject.transform.position + 5 * Vector3.up, user.gameObject.transform.rotation);

        clone.ignite(user, aim.rot);
    }
Exemplo n.º 4
0
 public HomingMissileObstacle(EvadableAbility ability, Unit missileUnit)
     : base(ability)
 {
     this.homingMissileAbility = (HomingMissile)ability.Ability;
     this.missileUnit          = missileUnit;
     this.initialPosition      = missileUnit.Position;
     this.initialTime          = Game.RawGameTime + this.homingMissileAbility.ActivationDelay;
 }
Exemplo n.º 5
0
        public HomingLauncher(Ship ship, Game1 game)
        {
            owner   = ship;
            missile = new HomingMissile(Vector2.Zero, ship, game);

            fireSFXs = missile.getFireSFX();
            random   = new Random();
        }
Exemplo n.º 6
0
    public void Attack(Transform target)
    {
        this.target = target;
        GameObject instancedMissile = Instantiate(MissilePrefab, launchPoint.position, Quaternion.identity);

        //instancedMissile.SetActive(false);
        currentMissile = instancedMissile.GetComponent <HomingMissile>();
        currentMissile.Launch(missileReachPoint, target, damage);
        ammo--;
    }
Exemplo n.º 7
0
    void LaunchHomingMissile()
    {
        HomingMissile newMissile = Instantiate(homingMissilePrefab, missileCannon.position, Quaternion.identity, proyectileContainer).GetComponent <HomingMissile>();

        newMissile.Initialize(powerPlusOn, model.missileDamage, model.movementSpeed);
        newMissile.SetScreenLimits(leftScreenLimit, rightScreenLimit, upperScreenLimit, lowerScreenLimit);

        if (onHomingMissileLaunch != null)
        {
            onHomingMissileLaunch(newMissile);
        }
    }
Exemplo n.º 8
0
    private void ShootMissile()
    {
        Vector3 target = MouseRayCast();

        GameObject missile = Instantiate(_missile, _missileSpawn.position, Quaternion.Euler(-90f, 0f, 0f));

        HomingMissile missileBrain = missile.GetComponent <HomingMissile>();

        missileBrain.Speed         = _missileSpeed;
        missileBrain.RotationSpeed = _missileSteerSpeed;
        missileBrain.Target        = target;
    }
    public void Cast(Player player)
    {
        float maxAngle     = 45;
        float angleSpacing = maxAngle / numberOfMissiles;
        float currentAngle = -maxAngle / 2;

        for (int i = 0; i < numberOfMissiles; i++)
        {
            HomingMissile missle = (HomingMissile)player.CreateBullet(missileBullet);
            missle.ShootOffset(currentAngle);
            currentAngle += angleSpacing;
        }
    }
Exemplo n.º 10
0
    public void PowerUpPickUp(string PowerUpType)
    {
        switch (PowerUpType)
        {
        case "TripleShot":
            StartCoroutine(TripleShotCooldown());
            break;

        case "SpeedUp":
            StartCoroutine(SpeedUpCooldown());
            break;

        case "Shield":
            _isShieldActive = true;
            //activate shield game object
            _shield.SetActive(true);
            _shieldHealth       = 3;
            _shieldSprite.color = Color.cyan;
            _uIManager.UpdateUIShield(_shieldHealth);
            break;

        case "Repair":
            Repair();
            break;

        case "Ammo":
            _currAmmo = _maxAmmo;
            _uIManager.UpdateUIAmmo(_currAmmo, _maxAmmo);
            break;

        case "MassHomingMissile":
            GameObject[] Targets = GameObject.FindGameObjectsWithTag("Enemy");
            foreach (GameObject Target in Targets)
            {
                GameObject    HMissileObject = Instantiate(HMissilePrefab, transform.position, Quaternion.identity);
                HomingMissile HMissileScript = HMissileObject.GetComponent <HomingMissile>();
                HMissileScript.AssignTarget(Target);
            }
            break;

        case "Asteroid":
            StartCoroutine(SpeedDownCooldown());
            break;

        default:
            Debug.Log("Default value in switch statement in Player script for PowerUpType");
            break;
        }
    }
Exemplo n.º 11
0
    // Start is called before the first frame update
    void Start()
    {
        //target = GameObject.FindGameObjectWithTag("spaceship").transform;

        if (hm = null)
        {
            HMissileObject = GameObject.FindGameObjectWithTag("2");
        }

        speed = 4;

        activated       = false;
        RespawnRotation = transform.rotation;
        RespawnPosition = transform.position;
        rb           = GetComponent <Rigidbody2D>();
        angularspeed = 4;
    }
Exemplo n.º 12
0
    void InitializeHommingMissileData(HomingMissile missile)
    {
        Vector2 missilePosition = missile.transform.position;

        float     smallestDistance = 1000f;
        Transform target           = null;

        foreach (EnemyController enemy in currentEnemies)
        {
            if (enemy)
            {
                float distanceToEnemy = Vector2.Distance(missilePosition, enemy.transform.position);
                if (distanceToEnemy < smallestDistance)
                {
                    target = enemy.transform;
                }
            }
        }

        missile.SetTarget(target);
    }
Exemplo n.º 13
0
    public void TryToFire( )
    {
        if (spawnPoint == null)
        {
            return;
        }

        if (realoadTimeLeft > 0 || timeToNextShot > 0)
        {
            return;
        }

        audioEvent.Raise(AudioEvents.RocketLaunch, transform.position);
        GameObject missile = Instantiate(parameters.Projectile, spawnPoint.position, Quaternion.Euler(0, 0, 90 + Random.Range(-15f, 15f)));

        hasShotMissile = true;
        if (mechAnimScript != null)
        {
            mechAnimScript.positionLocked = true;
        }

        HomingMissile missileScript = missile.GetComponent <HomingMissile>();

        missileScript.fromTeam = FromTeam;

        //Debug.Log("Has shot missile Launcher CS " + hasShotMissile);
        missileScript.SetDamage(parameters.GetDamage( ));

        //let homingMissile script know mech that shot. Used so self-circle collider of wing spawn is ignored for collision
        //currently console returns error because the below hierarchy fits the winged spawn only. TODO
        //Transform shootingMech = transform.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent;
        //Debug.Log("Mech Shooting" + shootingMech);
        //missile.GetComponent<HomingMissile>().ReceiveMechName(shootingMech);

        //find parent mech object that shot and pass it to homing Missile so missile ignores hitting that mech at first
        shootingMech = FindParentWithTag(transform, "Mech");
        Debug.Log("Name of Shooting Mech IS " + shootingMech.name);
        missileScript.ReceiveMechName(shootingMech);

        // TODO: suggest that we compare TAGS, not which gamepad this player is controlled by
        missileScript.playerNumber = transform.GetComponentInParent <Mech>().driver.gamepadNumber; // FIXME

        if (cursor == null)
        {
            cursor = UIResourceManager.MouseCursor;
        }
        cursor.AddMissile(missile);
        missile.transform.SetParent(LitterContainer.instanceTransform);

        timeToNextShot = parameters.DelayBetweenShots;
        currentMagSize--;

        if (isPlayerDriver)
        {
            weaponSlotEvents.Raise(UIEvent.LauncherOn, currentMagSize / parameters.MagSize);
        }

        if (currentMagSize <= 0)
        {
            currentMagSize  = (int)parameters.MagSize;
            realoadTimeLeft = parameters.RealoadTime;
        }
    }
Exemplo n.º 14
0
    private void OnTriggerEnter2D(Collider2D other)
    {
        if (other.tag == "Player" && tag != "BossEnemy")

        {
            if (_player != null)
            {
                _player.Damage();
            }

            Destroy(this.gameObject, 2.3f);
            _enemySpeed = 0f;
            _frequency  = 0f;
            _animator.SetTrigger("OnEnemyDeath");
            _isExploded = true;
        }


        if (other.tag == "Laser" && tag != "BossEnemy" && _isEnemyShieldActive == false)
        {
            Destroy(other.gameObject);

            if (_player != null)
            {
                Destroy(this.gameObject, 1.5f);
                _player.AddPoints(10);
                _enemySpeed = 0f;
                _frequency  = 0f;
                _animator.SetTrigger("OnEnemyDeath");
                _isExploded = true;
                other.GetComponent <Collider2D>().enabled = false;
            }
        }

        if (other.tag == "SuperLaser" && tag != "BossEnemy" && _isEnemyShieldActive == false)
        {
            Destroy(other.gameObject, 1.5f);

            if (_player != null)
            {
                Destroy(this.gameObject, 1.5f);
                _player.AddPoints(10);
                _enemySpeed = 0f;
                _frequency  = 0f;
                _animator.SetTrigger("OnEnemyDeath");
                _isExploded = true;
                other.GetComponent <Collider2D>().enabled = false;
            }
        }


        if (other.tag == "HomingMissile" && tag != "BossEnemy")
        {
            _homingMissile = GameObject.FindWithTag("HomingMissile").GetComponent <HomingMissile>();

            if (_homingMissile != null)
            {
                Destroy(other.gameObject, 2f);
                _homingMissile.OnMissileDestroy();
                _shakeBehavior.TriggerShake();
            }
            else
            {
                Debug.Log("HOMING MISSILE IS NULL");
            }


            if (_player != null)
            {
                _enemySpeed = 0f;
                _frequency  = 0f;
                Destroy(this.gameObject, 1.5f);
                _player.AddPoints(10);
                _animator.SetTrigger("OnEnemyDeath");
                _isExploded = true;
                other.GetComponent <Collider2D>().enabled = false;
            }
        }



        if (other.tag == "Laser" || other.tag == "SuperLaser" || other.tag == "Player" && tag == "EnemyShield" && _isEnemyShieldActive == true)
        {
            Destroy(other.gameObject);
            _isEnemyShieldActive = false;
            _enemyShieldSprite.gameObject.SetActive(false);
            _player.AddPoints(10);
        }


        if (tag == "AggressiveEnemy" && other.tag == "Player")
        {
            if (_player != null)
            {
                _player.Damage();
            }

            movementSpeed = 0;
            rotationSpeed = 0;
            Destroy(this.gameObject, 2.3f);
            _animator.SetTrigger("OnEnemyDeath");
            _isExploded = true;
        }



        if (tag == "BossEnemy" && other.tag == "Player" || other.tag == "Laser" || other.tag == "SuperLaser")
        {
            _shakeBehavior.TriggerShake();
            _bossLives--;
            _player.AddPoints(10);


            if (_bossLives == 0 && _player != null)
            {
                _bossSpeed     = 0f;
                _bossFrequency = 0f;
                _shakeBehavior.TriggerShake();
                Destroy(this.gameObject, 2.5f);
                _animator.SetTrigger("OnEnemyDeath");
                _isExploded       = true;
                _bossWinnerActive = true;

                if (_bossWinnerActive == true)
                {
                    StartCoroutine(WinnerTextCoroutine());
                }
            }
        }
    }