Exemple #1
0
    void SpreadShot(int shots)
    {
        Vector3 mousePos = cam.ScreenToWorldPoint(Input.mousePosition);
        Vector3 direction;

        direction = mousePos - firePoint.position;
        direction = direction.normalized;
        float   directionAngle    = AngleOffAroundAxis(Vector3.up, direction, Vector3.forward);
        Vector3 originalDirection = DirFromAngle(directionAngle);
        float   adjustedArc       = setArc * ((float)shots / (1.0f + arcScaling));
        Vector3 leftArc           = DirFromAngle(directionAngle + adjustedArc);
        Vector3 rightArc          = DirFromAngle(directionAngle - adjustedArc);

        for (int i = 0; i < shots; i++)
        {
            GameObject go = Instantiate(bulletPrefab);
            go.transform.localScale *= bulletScaling;
            BossBulletBehavior b = go.GetComponent <BossBulletBehavior>();
            b.SetBullet(bulletType);
            b.bulletDamage = (int)damageMultiplier;

            b.isPlayer            = true;
            b.playerBulletSpeed   = playerBulletSpeed;
            go.transform.position = new Vector2(firePoint.position.x, firePoint.position.y);

            Vector3 lerpDirection = Vector3.Slerp(leftArc, rightArc, (float)i / (float)(shots - 1));
            b.Move(lerpDirection, AngleOffAroundAxis(Vector3.up, lerpDirection, Vector3.back));
            //b.Move(originalDirection);
        }
        cooldownTime = COOLDOWN_TIME;
    }
Exemple #2
0
    void Shoot()
    {
        if (cooldownTime <= 0)
        {
            if (laserGunSet)
            {
            }
            else
            {
                int totalShots = move.GetShootCount();
                //int totalShots = 3;
                if (isPlayer && totalShots > 1)
                {
                    SpreadShot(totalShots);
                    return;
                }
                GameObject go = Instantiate(bulletPrefab);
                go.transform.localScale *= bulletScaling;
                Vector3            direction;
                BossBulletBehavior b = go.GetComponent <BossBulletBehavior>();

                if (!isPlayer)
                {
                    direction = target.transform.position - firePoint.position;
                }
                else
                {
                    b.SetBullet(bulletType);
                    b.bulletDamage = (int)damageMultiplier;
                    Vector3 mousePos = cam.ScreenToWorldPoint(Input.mousePosition);
                    direction           = mousePos - firePoint.position;
                    b.isPlayer          = true;
                    b.playerBulletSpeed = playerBulletSpeed;
                }
                go.transform.position = new Vector2(firePoint.position.x, firePoint.position.y);

                direction = direction.normalized;
                b.Move(direction, AngleOffAroundAxis(Vector3.up, direction, Vector3.back));
            }

            cooldownTime = COOLDOWN_TIME;
        }
    }