Exemple #1
0
    protected override void Shoot()
    {
        for (int i = 0; i < 4; i++)
        {
            part[i].transform.localPosition = part[i].transform.localPosition.normalized * defaultSize;
            part[i].transform.DOLocalMove(part[i].transform.localPosition.normalized * 8f, 0.4f).From();
        }

        for (int i = 0; i < amount[weaponLevel]; i++)
        {
            clone = Pooler.GetObject(laser, shootPoint.transform.position, transform.rotation);

            float randDir = Random.Range(-spread[weaponLevel], spread[weaponLevel]);

            shootPoint.transform.localRotation = Quaternion.Euler(new Vector3(0, 135
                                                                              + randDir, 0));

            clone.GetComponent <BaseAttack>().GetRigidBody().AddForce(shootPoint.transform.forward *
                                                                      (shootPower[weaponLevel] + Random.Range(-100, 100)) * (120 - (Mathf.Abs(randDir) * 3)) + velocity);

            clone.GetComponent <TrailRenderer>().Clear();
        }

        ProCamera2DShake.Instance.Shake(
            0.1f,                 //duration
            new Vector3(35, 35),  //strength
            2,                    //vibrato
            0.5f,                 //randomness
            aimAngle * -1,        //initialAngle (-1 = random)
            new Vector3(0, 0, 0), //rotation
            0.1f);                //smoothness

        bombTimer = 0;
    }
Exemple #2
0
    // Bomb
    protected override void Skill_0()
    {
        for (int i = 0; i < 4; i++)
        {
            part[i].transform.localPosition = part[i].transform.localPosition.normalized * defaultSize;
            part[i].transform.DOLocalMove(part[i].transform.localPosition.normalized * 15f, 0.2f).From();
        }

        clone = Pooler.GetObject(bomb, transform.position, transform.rotation);

        clone.GetComponent <Bomb>().SetOwner(this.gameObject);
        clone.GetComponent <Bomb>().ownerNum = playerNum;

        clone.GetComponent <Rigidbody>().AddForce(shootPoint.transform.forward * 400000 + velocity);

        if (nova.activeInHierarchy == true)
        {
            clone.GetComponent <Bomb>().novaImune = 0.4f;
        }

        shootTimer = shootDelay[weaponLevel];

        rB.AddForce(shootPoint.transform.forward * -60000);

        ProCamera2DShake.Instance.Shake(
            0.3f,                 //duration
            new Vector3(35, 35),  //strength
            2,                    //vibrato
            0.5f,                 //randomness
            aimAngle * -1,        //initialAngle (-1 = random)
            new Vector3(0, 0, 0), //rotation
            0.1f);                //smoothness

        queBomb = false;
    }
    void Shoot3()
    {
        if (shootToggle)
        {
            clone = Pooler.GetObject(laser3, shootPoint[0].transform.position, transform.rotation);
            clone.GetComponent <Laser>().SetVelocity(shootPoint[0].transform.forward * shootPower[weaponLevel]);
            clone.GetComponent <TrailRenderer>().Clear();
        }
        else
        {
            float offset = Random.Range(0, spread);

            clone = Pooler.GetObject(laser3, shootPoint[1].transform.position, transform.rotation);
            clone.GetComponent <BaseAttack>().SetVelocity(new Vector3(
                                                              Mathf.Sin((aimAngle - offset) * Mathf.Deg2Rad), 0,
                                                              Mathf.Cos((aimAngle - offset) * Mathf.Deg2Rad)).normalized *shootPower[weaponLevel] * -1);
            clone.GetComponent <TrailRenderer>().Clear();

            clone = Pooler.GetObject(laser3, shootPoint[2].transform.position, transform.rotation);
            clone.GetComponent <BaseAttack>().SetVelocity(new Vector3(
                                                              Mathf.Sin((aimAngle + offset) * Mathf.Deg2Rad), 0,
                                                              Mathf.Cos((aimAngle + offset) * Mathf.Deg2Rad)).normalized *shootPower[weaponLevel] * -1);
            clone.GetComponent <TrailRenderer>().Clear();
        }

        shootToggle = !shootToggle;
    }
    protected override void Shoot()
    {
        GameObject clone = Pooler.GetObject(bubble, shootPoint.transform.position, transform.rotation);

        shootPoint.transform.localRotation = Quaternion.Euler(new Vector3(0, 135 + Random.Range(-spread, spread), 0));
        clone.GetComponent <BaseAttack>().SetVelocity(shootPoint.transform.forward * shootPower[weaponLevel] + velocity);
    }
    void ShootHandler()
    {
        if (Input.GetMouseButtonDown(0))
        {
            Vector2 dir = Utils.GetDirection(transform.position, gunHandle.position);

            GameObject shot = pool.GetObject(gunHandle.GetChild(0).position, Quaternion.identity);
            shot.GetComponent <Rigidbody2D>().AddForce(dir.normalized, ForceMode2D.Impulse);
        }
    }
    void Shoot2()
    {
        clone = Pooler.GetObject(laser2, shootPoint[1].transform.position, transform.rotation);
        clone.GetComponent <Laser>().SetVelocity(shootPoint[1].transform.forward * shootPower[weaponLevel]);
        clone.GetComponent <TrailRenderer>().Clear();

        clone = Pooler.GetObject(laser2, shootPoint[2].transform.position, transform.rotation);
        clone.GetComponent <Laser>().SetVelocity(shootPoint[2].transform.forward * shootPower[weaponLevel]);
        clone.GetComponent <TrailRenderer>().Clear();
    }
    protected override void Shoot()
    {
        clone = Pooler.GetObject(laser, shootPoint.transform.position, transform.rotation);

        float randAim = Random.Range(aimAngle - spread, aimAngle + spread);

        clone.GetComponent <BaseAttack>().SetVelocity(new Vector3(
                                                          Mathf.Sin(randAim * Mathf.Deg2Rad), 0, Mathf.Cos(randAim * Mathf.Deg2Rad)).normalized *shootPower[weaponLevel] * -1);
        clone.GetComponent <TrailRenderer>().Clear();
    }
Exemple #8
0
    private void ShootHandler()
    {
        shotTimer -= Time.deltaTime;
        if (shotTimer < 0)
        {
            Vector2 dir = Utils.GetDirection(transform.position, player.transform.position);

            GameObject shot = pool.GetObject(transform.position, Quaternion.identity);
            shot.GetComponent <Rigidbody2D>().AddForce(dir.normalized * shotSpeed, ForceMode2D.Impulse);

            shotTimer = shotCooldown;
        }
    }
Exemple #9
0
    protected override void Shoot()
    {
        if (!trigger1Down)
        {
            smallgun[0].transform.localPosition = new Vector3(17, 0, -3);
            smallgun[1].transform.localPosition = new Vector3(3, 0, -17);

            smallgun[0].transform.DOLocalMoveZ(1, shootDelay[0] * 0.8f).From();
            smallgun[1].transform.DOLocalMoveX(-1, shootDelay[0] * 0.8f).From();



            shootPoint[0].GetComponent <AudioSource>().Play();

            //rB.AddForce(shootPoint[0].transform.forward * -5000);

            switch (weaponLevel)
            {
            default:
            case 0:
                clone = Pooler.GetObject(laser1, shootPoint[0].transform.position, transform.rotation);
                clone.GetComponent <BaseAttack>().SetVelocity(shootPoint[0].transform.forward * shootPower[weaponLevel]);
                clone.GetComponent <TrailRenderer>().Clear();

                break;

            case 1:
                for (int i = 1; i < 3; i++)
                {
                    clone = Pooler.GetObject(laser2, shootPoint[i].transform.position, transform.rotation);
                    clone.GetComponent <BaseAttack>().SetVelocity(shootPoint[i].transform.forward * shootPower[weaponLevel]);
                    clone.GetComponent <TrailRenderer>().Clear();
                }
                break;

            case 2:

                clone = Pooler.GetObject(laser1, shootPoint[0].transform.position, transform.rotation);
                clone.GetComponent <BaseAttack>().SetVelocity(shootPoint[0].transform.forward * shootPower[weaponLevel] * 1.2f);
                clone.GetComponent <TrailRenderer>().Clear();

                for (int i = 1; i < 3; i++)
                {
                    clone = Pooler.GetObject(laser2, shootPoint[i].transform.position, transform.rotation);
                    clone.GetComponent <BaseAttack>().SetVelocity(shootPoint[i].transform.forward * shootPower[weaponLevel]);
                    clone.GetComponent <TrailRenderer>().Clear();
                }
                break;
            }
        }
    }
    public void ExpExplosion(float value, Vector3 pos)
    {
        float expSpeed = 5000 + 2000 * value;

        for (int i = 0; i <= (value / 3) + 1; i++)
        {
            clone = Pooler.GetObject(exp, pos, transform.rotation);

            clone.GetComponent <Rigidbody>().AddForce(new Vector3(
                                                          Random.Range(-expSpeed, expSpeed),
                                                          Random.Range(-10, 10),
                                                          Random.Range(-expSpeed, expSpeed)));
        }
    }
    IEnumerator SpiralWait()
    {
        GameObject[] prj = new GameObject[(int)Mathf.Floor(numberOfShots * numberOfSpins)];

        float angleChange    = 360 / numberOfShots;
        float startAngle     = 0;
        float incrementAngle = 0;

        for (int i = 0; i < Mathf.Floor(numberOfShots * numberOfSpins); i++)
        {
            incrementAngle = angleChange * i;

            prj[i] = projectilePool.GetObject();
            var radians = (startAngle + incrementAngle) * Mathf.Deg2Rad;

            prj[i].transform.position = new Vector3(Mathf.Cos(radians), Mathf.Sin(radians), 0) * radius + gameObject.transform.position;
            prj[i].transform.rotation = Quaternion.Euler(0, 0, incrementAngle);
            prj[i].SetActive(true);
            SFX.PlayOneShot(shoot);

            yield return(new WaitForSeconds(spiralWaitBetweenShots));
        }
    }
    void Shoot1()
    {
        clone = Pooler.GetObject(laser1, shootPoint[0].transform.position, transform.rotation);
        clone.GetComponent <Laser>().SetVelocity(shootPoint[0].transform.forward * shootPower[weaponLevel]);
        clone.GetComponent <TrailRenderer>().Clear();

        ProCamera2DShake.Instance.Shake(
            0.2f,                 //duration
            new Vector3(40, 40),  //strength
            2,                    //vibrato
            0.5f,                 //randomness
            aimAngle * -1,        //initialAngle (-1 = random)
            new Vector3(0, 0, 0), //rotation
            0.1f);                //smoothness

        rB.AddForce(shootPoint[0].transform.forward * speed * -5f * shootDelay[weaponLevel]);
    }
    // Black Hole
    protected override void Skill_0()
    {
        clone = Pooler.GetObject(blackHole, shootPoint.transform.position, transform.rotation);
        //clone.GetComponent<BaseAttack>().SetVelocity(shootPoint.transform.forward * 700);
        clone.GetComponent <Rigidbody>().AddForce(shootPoint.transform.forward *
                                                  (shootPower[weaponLevel]) * 100 + velocity);


        ProCamera2DShake.Instance.Shake(
            0.4f,                 //duration
            new Vector3(75, 75),  //strength
            2,                    //vibrato
            0.5f,                 //randomness
            aimAngle * -1,        //initialAngle (-1 = random)
            new Vector3(0, 0, 0), //rotation
            0.1f);                //smoothness

        rB.AddForce(shootPoint.transform.forward * -60000);
    }
Exemple #14
0
    void ShootBullet()
    {
        if (bulletPrefab == null || _bulletSpawn == null)
        {
            return;
        }

        Bullet bullet = Pooler.GetObject(bulletPrefab, _bulletSpawn.position, Quaternion.identity) as Bullet;

        if (bullet == null)
        {
            return;
        }

        if (shootDir == Vector2.zero)
        {
            bullet.travelDirection = Vector2.down;
            return;
        }

        bullet.travelDirection = shootDir;
    }
    private void Shoot()
    {
        // Projectile automatically aims for player.
        if (!canShoot)
        {
            return;
        }
        if (firstTimeShoot)
        {
            StartCoroutine(WaitToShoot(randShootingOffset));
        }
        else
        {
            // CONTINUOUS
            if (shootingType == shootingTypes.Continuous)
            {
                GameObject prj = projectilePool.GetObject();
                prj.transform.position = hand.transform.position; // adjusts the projectiles starting position and rotation according to the enemy hand's position/rotation
                prj.transform.rotation = hand.transform.rotation;
                prj.SetActive(true);
                SFX.PlayOneShot(ShootSFX);
                StartCoroutine(CanShoot());
            }

            // ARC & ARC TIGHT
            else if (shootingType == shootingTypes.Arc || shootingType == shootingTypes.ArcTight)
            {
                GameObject[] prj = new GameObject[numberOfShots];
                StartCoroutine(CanShoot());
                float angleIndex = 0;
                if (numberOfShots % 2f == 0f)
                {
                    angleIndex = numberOfShots / -2 + 0.5f;
                }
                else
                {
                    angleIndex = -Mathf.FloorToInt(numberOfShots / 2);
                }

                float targetAngle;

                if (!moveTowardsProtection)
                {
                    targetAngle = Mathf.Atan2(player.transform.position.y - hand.transform.position.y, player.transform.position.x - hand.transform.position.x) * Mathf.Rad2Deg;
                }
                else
                {
                    targetAngle = Mathf.Atan2(Protection.transform.position.y - hand.transform.position.y, Protection.transform.position.x - hand.transform.position.x) * Mathf.Rad2Deg;
                }


                if (targetAngle < 0)
                {
                    targetAngle = 360 + targetAngle;
                }

                for (int i = 0; i < numberOfShots; i++)
                {
                    float angl = distanceAngle * angleIndex;
                    prj[i] = projectilePool.GetObject();
                    var radians = (targetAngle + angl) * Mathf.Deg2Rad;

                    prj[i].transform.position = new Vector3(Mathf.Cos(radians), Mathf.Sin(radians), 0) * radius + gameObject.transform.position;
                    if (shootingType == shootingTypes.Arc)
                    {
                        prj[i].transform.rotation = hand.transform.rotation * Quaternion.Euler(0, 0, angl);
                    }
                    else
                    {
                        prj[i].transform.rotation = hand.transform.rotation;
                    }
                    prj[i].SetActive(true);
                    angleIndex++;
                }
                SFX.PlayOneShot(ShootSFX);
            }

            // CIRCLE
            else if (shootingType == shootingTypes.Circle)
            {
                GameObject[] prj = new GameObject[numberOfShots];
                StartCoroutine(CanShoot());

                float angleChange = 360 / numberOfShots;

                float startAngle;
                if (!moveTowardsProtection)
                {
                    startAngle = Mathf.Atan2(player.transform.position.y - hand.transform.position.y, player.transform.position.x - hand.transform.position.x) * Mathf.Rad2Deg;
                }
                else
                {
                    startAngle = Mathf.Atan2(Protection.transform.position.y - hand.transform.position.y, Protection.transform.position.x - hand.transform.position.x) * Mathf.Rad2Deg;
                }
                float incrementAngle = 0;

                if (startAngle < 0)
                {
                    startAngle = 360 + startAngle;
                }

                for (int i = 0; i < numberOfShots; i++)
                {
                    incrementAngle = angleChange * i;
                    prj[i]         = projectilePool.GetObject();
                    var radians = (startAngle + incrementAngle) * Mathf.Deg2Rad;

                    prj[i].transform.position = new Vector3(Mathf.Cos(radians), Mathf.Sin(radians), 0) * radius + gameObject.transform.position;
                    prj[i].transform.rotation = hand.transform.rotation * Quaternion.Euler(0, 0, incrementAngle);
                    prj[i].SetActive(true);
                }
                SFX.PlayOneShot(ShootSFX);
            }

            // SPIRAL
            else if (shootingType == shootingTypes.Spiral)
            {
                StartCoroutine(CanShoot());

                StartCoroutine(SpiralWait());
            }
        }
    }
Exemple #16
0
    public void SpawnBlast(Vector3 pos)
    {
        GameObject clone = Pooler.GetObject(blast, pos, transform.rotation);

        //GameObject clone = Instantiate(blast_prefab, pos, Quaternion.identity) as GameObject;
    }
Exemple #17
0
    private GameObject CreateEnemyInPath()
    {
        var enemy = Pooler.GetObject(_testObject, transform.position, Quaternion.identity);

        return(enemy.gameObject);
    }
 public GameObject GetLaser(Vector3 pos)
 {
     return(Pooler.GetObject(redLaser, pos, transform.rotation));
 }
Exemple #19
0
    public void SpawnCoin(float x, float z, Vector3 center)
    {
        Pooler.GetObject(coin, new Vector3(x, 0, z) + center, Quaternion.identity);

        ScoreManager.Instance.AddCointTotal();
    }
    private void PlayerShoot()
    {
        if (!canShoot || paused)
        {
            return;
        }

        if (currentWeapon == 0 || currentWeapon == 3)
        {
            // Adjusts the direction of the shot according to current mouse position. Then adjusts the projectile starting position
            // and rotation according to the Player GameObject's position and rotation.
            //Vector2 mousePosition = controls.Player.MousePosition.ReadValue<Vector2>();
            //mousePosition = Camera.main.ScreenToWorldPoint(mousePosition);
            GameObject prj = projectilePool.GetObject();
            prj.transform.position = hand.transform.position;
            prj.transform.rotation = hand.transform.rotation;
            if (currentWeapon == 3)
            {
                int textRand = Random.Range(0, 5);
                if (textRand == 0)
                {
                    prj.GetComponentInChildren <TextMesh>().text = "Persuasion!";
                }
                else if (textRand == 1)
                {
                    prj.GetComponentInChildren <TextMesh>().text = "Deception!";
                }
                else if (textRand == 2)
                {
                    prj.GetComponentInChildren <TextMesh>().text = "Intimidation!";
                }
                else if (textRand == 1)
                {
                    prj.GetComponentInChildren <TextMesh>().text = "Insight!";
                }
                PlayerSFX.PlayOneShot(playerShootWord);
            }
            else
            {
                PlayerSFX.PlayOneShot(playerShootStaff);
            }
            prj.SetActive(true);
            StartCoroutine(CanShoot());
        }
        else if (currentWeapon == 1)
        {
            GameObject[] prj = new GameObject[7];
            StartCoroutine(CanShoot());
            float angleIndex = -Mathf.FloorToInt(7 / 2);

            Vector2 mousePosition = controls.Player.MousePosition.ReadValue <Vector2>();
            mousePosition = Camera.main.ScreenToWorldPoint(mousePosition);

            float targetAngle = Mathf.Atan2(mousePosition.y - hand.transform.position.y, mousePosition.x - hand.transform.position.x) * Mathf.Rad2Deg;


            if (targetAngle < 0)
            {
                targetAngle = 360 + targetAngle;
            }

            for (int i = 0; i < 7; i++)
            {
                float angl = 30 * angleIndex;
                prj[i] = projectilePool.GetObject();
                var radians = (targetAngle + angl) * Mathf.Deg2Rad;

                prj[i].transform.position = new Vector3(Mathf.Cos(radians), Mathf.Sin(radians), 0) * 0.5f + gameObject.transform.position;
                prj[i].transform.rotation = hand.transform.rotation;
                prj[i].SetActive(true);
                angleIndex++;
            }
            PlayerSFX.PlayOneShot(playerShootBook);
        }
    }