public void TryToFire( )
    {
        if (spawnPoint == null)
        {
            return;
        }

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

        GameObject shotGO = Instantiate
                            (
            parameters.Projectile,
            spawnPoint.position,
            Quaternion.Euler
            (
                spawnPoint.rotation.eulerAngles.x,
                spawnPoint.rotation.eulerAngles.y,
                spawnPoint.rotation.eulerAngles.z + Random.Range(0f, 15f)
            )
                            );

        Rigidbody2D shotRB = shotGO.GetComponent <Rigidbody2D>( );

        shotRB.velocity = shotGO.transform.rotation * Vector2.left * parameters.Force;

        CanisterGrenade grenade = shotGO.GetComponent <CanisterGrenade>();

        grenade.fromTeam = FromTeam;
        grenade.SetDamage(parameters.GetDamage( ));

        shotGO.transform.SetParent(LitterContainer.instanceTransform);

        timeToNextShot = parameters.DelayBetweenShots;
        currentMagSize--;

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

        if (currentMagSize <= 0)
        {
            currentMagSize  = (int)parameters.MagSize;
            realoadTimeLeft = parameters.RealoadTime;
        }
    }
Example #2
0
    public void TryToFire()
    {
        if (spawnPoint == null)
        {
            return;
        }

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

        audioEvent.Raise(AudioEvents.Shot, transform.position);
        muzzleFlesh.Play( );
        GameObject shotGO = Instantiate(parameters.Projectile, spawnPoint.position, Quaternion.Euler(0, 0, -xAngle + Random.Range(-5f, 5f)));

        // TODO: suggest that we compare TAGS, not which gamepad this player is controlled by
        shotGO.GetComponent <ShotBreaksIntoParticle>().fromTeam = FromTeam;

        Rigidbody2D shotRB = shotGO.GetComponent <Rigidbody2D>( );

        shotRB.velocity = shotGO.transform.rotation * Vector2.right * parameters.Force;
        shotGO.GetComponent <ShotBreaksIntoParticle>( ).SetDamage(parameters.GetDamage( ));

        shotGO.transform.SetParent(LitterContainer.instanceTransform);

        GameObject s = Instantiate(shell, shellSpawnPoint.position, Quaternion.identity);

        s.GetComponent <Rigidbody2D>( ).AddForce(Quaternion.Euler(0, 0, Random.Range(-30, 30)) * spawnPoint.up * 15);

        timeToNextShot = parameters.DelayBetweenShots;

        currentMagSize--;

        model.transform.rotation = Quaternion.Euler(model.transform.eulerAngles.x, model.transform.eulerAngles.y, model.transform.eulerAngles.z + 10f);

        if (isPlayerDriver)
        {
            weaponSlotEvents.Raise(UIEvent.TurretOn, currentMagSize / (float)magSize);
        }

        if (currentMagSize <= 0)
        {
            currentMagSize  = magSize;
            realoadTimeLeft = parameters.RealoadTime;
        }
    }
Example #3
0
    public void TryToFire( )
    {
        if (spawnPoint == null)
        {
            return;
        }

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

        GameObject shotGO = Instantiate(parameters.Projectile, spawnPoint.position, Quaternion.Euler(0, 0, -xAngle + Random.Range(-5f, 5f)));

        shotGO.GetComponent <ShotBreaksIntoParticle>().fromTeam = FromTeam;

        Rigidbody2D shotRB = shotGO.GetComponent <Rigidbody2D>( );

        shotRB.velocity = shotGO.transform.rotation * Vector2.right * parameters.Force;
        shotGO.GetComponent <ShotBreaksIntoParticle>( ).SetDamage(parameters.GetDamage( ));

        shotGO.transform.SetParent(LitterContainer.instanceTransform);

        timeToNextShot = parameters.DelayBetweenShots;
        currentMagSize--;

        audioEvent.Raise(AudioEvents.DudeBoltShot, transform.position);
        muzzleFlesh.Play( );

        GameObject s   = Instantiate(shell, shellSpawnPoint.position, Quaternion.identity);
        Transform  dir = isRight ? shellSpawnPoint : shellSpawnPoint2;

        s.GetComponent <Rigidbody2D>( ).AddForce(Quaternion.Euler(0, 0, Random.Range(-30, 30)) * dir.up * 3);

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

        if (currentMagSize <= 0)
        {
            currentMagSize  = (int)parameters.MagSize;
            realoadTimeLeft = parameters.RealoadTime;
        }
    }
    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;
        }
    }
Example #5
0
    private void ShootLaser()
    {
        if (!shooting)
        {
            audioEvent.Raise(audioEventType, gun.transform.position);
            shooting = true;
            Invoke("StopSound", 1f);
        }

        beam.gameObject.SetActive(true);
        if (!muzzleFlesh.isPlaying)
        {
            muzzleFlesh.Play( );
        }

        Vector2 laserDirection   = spawnPoint.rotation * (spawnPoint.right * -1);
        float   currentLaserSize = maxLaserSize;

        RaycastHit2D hit = Physics2D.Raycast(spawnPoint.position, laserDirection, maxLaserSize);

        if (hit.collider != null)
        {
            currentLaserSize             = Vector2.Distance(spawnPoint.position, hit.point);
            beam.transform.localScale    = new Vector3(beam.transform.localScale.x, beam.transform.localScale.y, currentLaserSize * laserScaleCorrection);
            beam.transform.localPosition = new Vector3(beam.transform.localPosition.x, beam.transform.localPosition.y, currentLaserSize * laserMoveCorrection);

            impact.transform.position = hit.point;

            if (!impact.isPlaying)
            {
                impact.Play( );
            }

            Player collidedPlayer = hit.collider.gameObject.GetComponent <Player>();
            Mech   collidedMech   = hit.collider.gameObject.GetComponent <Mech>();

            if (collidedPlayer != null || collidedMech != null)
            {
                collidedPlayer = collidedPlayer == null ? collidedMech.driver : collidedPlayer;
            }

            if (FromTeam != Team.Independant && collidedPlayer && collidedPlayer.team == FromTeam)
            {
                return;
            }

            HP hp = hit.collider.GetComponent <HP>( );
            if (hp)
            {
                didDamageEvent.Raise(0.1f);
                hp.TakeDamage(parameters.GetDamage( ) * Time.deltaTime);
            }

            CanisterGrenade canisterGrenade = hit.collider.GetComponent <CanisterGrenade>();
            if (canisterGrenade)
            {
                canisterGrenade.DoDestruction(canisterGrenade.transform.position);
            }

            Mine mine = hit.collider.GetComponent <Mine>();
            if (mine)
            {
                mine.ExplodeAndDestroy();
            }
        }
        else
        {
            // Shooting in the air :(
            currentLaserSize             = maxLaserSize;
            beam.transform.localScale    = new Vector3(beam.transform.localScale.x, beam.transform.localScale.y, currentLaserSize * laserScaleCorrection);
            beam.transform.localPosition = new Vector3(beam.transform.localPosition.x, beam.transform.localPosition.y, currentLaserSize * laserMoveCorrection);
        }
    }