Example #1
0
    void ZZShotgun()
    {
        IBullet[] bullets = new IBullet[40];
        Vector3   vec     = new Vector3(0, 0, 1);

        for (int i = 0; i < 18; i++)
        {
            GameObject bullet = BulletUtil.LoadBullet(shooter.GetBulletName());

            bullet.transform.position = shooter.GetPos();

            bullet.transform.forward = Quaternion.AngleAxis(20 * i, Vector3.up) * vec;
            IBullet bulletInfo = bullet.GetComponent <IBullet>();
            bulletInfo.shooter = shooter;
            bulletInfo.Fire();
            bullets[i]       = bulletInfo;
            bulletInfo.speed = 5.0f;
        }

        if (count % 2 == 0)
        {
            for (int j = 0; j < 18; j++)
            {
                GameObject bullet = BulletUtil.LoadBullet("米粒");

                bullet.transform.position = shooter.GetPos();
                bullet.transform.forward  = Quaternion.AngleAxis(20 * j, Vector3.up) * vec1;
                IBullet bulletInfo = bullet.GetComponent <IBullet>();
                bulletInfo.shooter = shooter;
                bulletInfo.speed   = 5;
                bulletInfo.Fire();
            }
            vec1 = Quaternion.AngleAxis(10, Vector3.up) * vec1;
        }
    }
Example #2
0
    IEnumerator ZZShotgun()
    {
        Vector3[] bulletsPos = new Vector3[20];
        float     distance   = 0.4f;
        Vector3   vec        = new Vector3(0, 0, 1);

        for (int a = 0; a < 1; a++)
        {
            for (int i = 0; i < 20; i++)
            {
                bulletsPos[i] = shooter.GetPos() + Quaternion.AngleAxis(18 * i, Vector3.up) * vec * distance;
                distance     += 0.2f;
            }

            for (int i = 0; i < 20; i++)
            {
                for (int j = -8; j < 29; j++)
                {
                    GameObject bullet2 = BulletUtil.LoadBullet(shooter.GetBulletName());

                    bullet2.transform.position = bulletsPos[i];

                    bullet2.transform.forward = Quaternion.AngleAxis(10 * j, Vector3.up) * vec;
                    IBullet bulletInfo2 = bullet2.GetComponent <IBullet>();
                    bulletInfo2.shooter = shooter;
                    bulletInfo2.Fire();
                    bulletInfo2.speed = 3.0f;
                }
                yield return(new WaitForSeconds(0.1f));
            }
        }
    }
Example #3
0
    IEnumerator ZZShotgun()
    {
        Vector3 vec = GetVec();

        for (int i = -9; i < 36; i++)
        {
            GameObject bullet = BulletUtil.LoadBullet(shooter.GetBulletName());

            bullet.transform.position = shooter.GetPos();

            bullet.transform.forward = Quaternion.AngleAxis(20 * i, Vector3.up) * vec;
            IBullet bulletInfo = bullet.GetComponent <IBullet>();
            bulletInfo.shooter = shooter;
            bulletInfo.speed   = 5;
            bulletInfo.delay   = 0;

            bulletInfo.Fire();

            GameObject bullet2 = BulletUtil.LoadBullet(shooter.GetBulletName());

            bullet2.transform.position = shooter.GetPos();

            bullet2.transform.forward = Quaternion.AngleAxis(20 * i, Vector3.down) * vec;
            IBullet bulletInfo2 = bullet2.GetComponent <IBullet>();
            bulletInfo2.shooter = shooter;
            bulletInfo2.speed   = 5;
            bulletInfo2.delay   = 0;

            bulletInfo2.Fire();
            yield return(new WaitForSeconds(0.1f));
        }
    }
Example #4
0
    IEnumerator ZZShotgun()
    {
        for (int i = 0; i < 4; i++)
        {
            Vector3 vec = new Vector3(0, 0, 1);

            Vector3 flowerVec = new Vector3(0, 0, 1);
            flowerVec = Quaternion.AngleAxis(Random.Range(0, 36) * 10, Vector3.up) * vec;
            for (int j = 0; j < 7; j++)
            {
                GameObject bullet;
                bullet = BulletUtil.LoadBullet(shooter.GetBulletName());



                bullet.transform.position = shooter.GetPos();

                bullet.transform.forward = Quaternion.AngleAxis(10 * j, Vector3.up) * flowerVec;
                IBullet bulletInfo = bullet.GetComponent <IBullet>();

                bulletInfo.shooter = shooter;

                bulletInfo.speed = 1.5f;
                bulletInfo.Fire();
            }
            yield return(new WaitForSeconds(2.0f));
        }
    }
Example #5
0
    IEnumerator ZZShotgun()
    {
        for (int i = 0; i >= 0; i++)
        {
            Vector3 vec = new Vector3(0, 0, 1);
            int     tj  = Random.Range(-8, 20);
            for (int j = -8; j < 28; j++)
            {
                GameObject bullet;

                if (i % 2 == 1)
                {
                    bullet = BulletUtil.LoadBullet("红边圆");
                }
                else
                {
                    bullet = BulletUtil.LoadBullet("蓝边圆");
                }



                bullet.transform.position = shooter.GetPos();

                bullet.transform.forward = Quaternion.AngleAxis(10 * j, Vector3.up) * vec;
                IBullet bulletInfo = bullet.GetComponent <IBullet>();
                bulletInfo.shooter = shooter;
                bulletInfo.speed   = 1.0f;
                bulletInfo.Fire();
            }

            Vector3 flowerVec = new Vector3(0, 0, 1);
            flowerVec = Quaternion.AngleAxis(Random.Range(0, 36) * 10, Vector3.up) * vec;
            for (int j = 0; j < 7; j++)
            {
                GameObject bullet;

                if (i % 2 == 1)
                {
                    bullet = BulletUtil.LoadBullet("红花");
                }
                else
                {
                    bullet = BulletUtil.LoadBullet("蓝花");
                }



                bullet.transform.position = shooter.GetPos() + new Vector3(0, 0.3f, 0);;

                bullet.transform.forward = Quaternion.AngleAxis(10 * j, Vector3.up) * flowerVec;
                IBullet bulletInfo = bullet.GetComponent <IBullet>();

                bulletInfo.shooter = shooter;

                bulletInfo.speed = 1.0f;
                bulletInfo.Fire();
            }
            yield return(new WaitForSeconds(3.5f));
        }
    }
Example #6
0
    public void Die()
    {
        EventManager.TriggerEvent("playerDied", null);
        GameObject explosion = BulletUtil.LoadBullet("ExplosionParticle");

        explosion.transform.position = transform.position;
        explosion.GetComponent <IBullet>().Fire();
        BarrageGame.Instance.GameOver();
    }
Example #7
0
        protected override void Execute(List <GameEntity> entities)
        {
            foreach (var gameEntity in entities)
            {
                var fireCmd = gameEntity.fireCmdComp;
                gameEntity.RemoveFireCmdComp();
                if (fireCmd.Count == 0)
                {
                    continue;
                }

                var playerView   = (PlayerView)gameEntity.viewComp.View;
                var playerDamage = gameEntity.GetStat(StatFlag.Damage);

                if (fireCmd.Count == 1)
                {
                    BulletUtil.CreateBulletEntity(
                        _contexts,
                        gameEntity,
                        playerView.Shoot.position,
                        fireCmd.Angle,
                        playerDamage,
                        gameEntity.GetStat(StatFlag.FollowStartTime),
                        gameEntity.GetStat(StatFlag.FollowRotMaxAngle));
                }
                else
                {
                    var shootPos  = playerView.Shoot.position;
                    var playerPos = playerView.transform.position;

                    var count = fireCmd.Count;

                    var rightDir = Vector3
                                   .Cross(fireCmd.Angle.Angle2Vector2D(), Vector3.forward)
                                   .normalized;
                    var spacing =
                        gameEntity.GetStat(StatFlag.BulletSpace);
                    var startPos =
                        shootPos + rightDir * (count - 1) * spacing / 2f;

                    for (var i = 0; i < count; i++)
                    {
                        var spawnPos = startPos - rightDir * (i * spacing);
                        BulletUtil.CreateBulletEntity(
                            _contexts,
                            gameEntity,
                            spawnPos,
                            (spawnPos - playerPos).Vector2Angle2D(),
                            playerDamage,
                            gameEntity.GetStat(StatFlag.FollowStartTime),
                            gameEntity.GetStat(StatFlag.FollowRotMaxAngle));
                    }
                }
            }
        }
    public void Init(BulletType type, EnemyData data)
    {
        IEnemyBulletModel model = BulletUtil.GetEnemyBulletModel(type);

        if (model == null)
        {
            return;
        }
        model.Init(data);
        Init(model);
    }
Example #9
0
    public override void Fire()
    {
        GameObject bullet = BulletUtil.LoadBullet(shooter.GetBulletName());

        bullet.transform.position = shooter.GetPos();
        bullet.transform.rotation = Quaternion.Euler(0, Random.Range(0, 360), 0);
        bullet.GetComponent <IBullet>().shooter = shooter;
        if (target)
        {
            bullet.GetComponent <IBullet>().target = target;
        }
        bullet.GetComponent <IBullet>().Fire();
    }
Example #10
0
    public virtual void Fire(Vector3 vec)
    {
        //从对象池里取出子弹
        GameObject bullet = BulletUtil.LoadBullet(shooter.GetBulletName());

        //将取出的子弹的位置设置为射击者的位置
        bullet.transform.position = shooter.GetPos();
        //使子弹的forward向量等于射击者到目标的向量,也就是说让子弹正面朝向目标
        bullet.transform.forward = vec;
        //将子弹的攻击者设置为射击者
        bullet.GetComponent <IBullet>().shooter = shooter;
        //调用子弹的发射函数。可在子弹的发射函数中设置发射延迟或者启动一个新的函数或协程。
        bullet.GetComponent <IBullet>().Fire();
    }
Example #11
0
    void GhRing()
    {
        for (int j = 0; j < 18; j++)
        {
            GameObject bullet = BulletUtil.LoadBullet(shooter.GetBulletName());

            bullet.transform.position = shooter.GetPos();
            bullet.transform.forward  = Quaternion.AngleAxis(20 * j, Vector3.up) * vec;
            IBullet bulletInfo = bullet.GetComponent <IBullet>();
            bulletInfo.shooter = shooter;
            bulletInfo.speed   = 5;
            bulletInfo.Fire();
        }
        vec = Quaternion.AngleAxis(10, Vector3.up) * vec;
    }
Example #12
0
    //返回BulletUtil的mono类,当项目中存在时直接调用,不存在则新建空物体并挂载脚本,更新barrageUtil为新的BarrageUtil
    public BulletUtil getBulletUtil()
    {
        if (bulletUtil != null)
        {
            return(bulletUtil);
        }
        BulletUtil newBulletUtil = GameObject.FindObjectOfType <BulletUtil>();

        if (newBulletUtil == null)
        {
            GameObject empty = new GameObject();
            newBulletUtil = empty.AddComponent <BulletUtil>();
        }
        bulletUtil = newBulletUtil;
        return(newBulletUtil);
    }
Example #13
0
    IEnumerator YkBall()
    {
        for (int i = 0; i < 3; i++)
        {
            Vector3 vec = new Vector3(0, 0, 1);
            for (int j = -8; j < 10; j++)
            {
                GameObject bullet = BulletUtil.LoadBullet(shooter.GetBulletName());

                bullet.transform.position = shooter.GetPos();
                bullet.transform.forward  = Quaternion.AngleAxis(20 * j, Vector3.up) * vec;
                bullet.GetComponent <IBullet>().shooter = shooter;
                bullet.GetComponent <IBullet>().Fire();
            }
            yield return(new WaitForSeconds(0.1f));
        }
    }
Example #14
0
    void OnTriggerEnter(Collider collider)
    {
        if ((bulletHitMask.value & 1 << collider.gameObject.layer) != 0)
        {
            BulletUtil.deactivateBullet(gameObject);

            switch (bulletType)
            {
            case ShooterTypeEnum.FRIENDLY:
                FriendlyBulletObjectPool.instance.returnPooledObject(gameObject);
                break;

            case ShooterTypeEnum.HOSTILE:
                EnemyBulletObjectPool.instance.returnPooledObject(gameObject);
                break;
            }

            GameObject impactEffectParticleSystem;
            switch (collider.gameObject.layer)
            {
            case 6:     //Player.
                LivesManager.instance.decrementLivesWithInvul();
                break;

            case 9:     // Boundary.
                break;

            case 10:     // Indestructible.
                impactEffectParticleSystem = (GameObject)Instantiate(impactEffect, transform.position, transform.rotation);
                Destroy(impactEffectParticleSystem, 1.0f);
                break;

            default:
                impactEffectParticleSystem = (GameObject)Instantiate(impactEffect, transform.position, transform.rotation);
                Destroy(impactEffectParticleSystem, 1.0f);

                BaseHealth   collidedHealthComponent = collider.gameObject.GetComponent <BaseHealth>();
                BulletDamage damageComponent         = gameObject.GetComponent <BulletDamage>();
                if (collidedHealthComponent != null && damageComponent != null)
                {
                    collidedHealthComponent.takeDamage(damageComponent.damage);
                }
                break;
            }
        }
    }
Example #15
0
    IEnumerator ZZShotgun()
    {
        Vector3 vec = new Vector3(0, 0, 1);

        for (int j = -8; j < 1; j++)
        {
            GameObject bullet = BulletUtil.LoadBullet(shooter.GetBulletName());

            bullet.transform.position = shooter.GetPos();

            bullet.transform.forward = Quaternion.AngleAxis(45 * j, Vector3.up) * vec;
            IBullet bulletInfo = bullet.GetComponent <IBullet>();
            bulletInfo.shooter = shooter;
            bulletInfo.Fire();
        }
        yield return(new WaitForSeconds(0.5f));
    }
Example #16
0
    public void DropPoint()
    {
        //随机掉落点数
        int count = UnityEngine.Random.Range(-2, 5);

        if (count <= 0)
        {
            return;
        }


        GameObject bullet     = BulletUtil.LoadBullet(UnityEngine.Random.Range(0, 2) == 0?"ppt":"hpt");
        IBullet    bulletInfo = bullet.GetComponent <IBullet>();

        bulletInfo.shooter        = this;
        bullet.transform.position = transform.position;
        bulletInfo.Fire();
    }
Example #17
0
    //射击方法,需要重写
    public override void Fire()
    {
        Vector3 vec = GetVec();


        for (int i = -1 * count; i < count; i++)
        {
            GameObject bullet = BulletUtil.LoadBullet(shooter.GetBulletName());

            bullet.transform.position = shooter.GetPos();

            bullet.transform.forward = Quaternion.AngleAxis(20 * i, Vector3.up) * vec;
            IBullet bulletInfo = bullet.GetComponent <IBullet>();
            bulletInfo.shooter = shooter;
            bulletInfo.speed   = 10;
            bulletInfo.delay   = 3;
            bulletInfo.Fire();
        }
    }
Example #18
0
    public void Die()
    {
        GameObject explosion = BulletUtil.LoadBullet("ExplosionParticle");

        explosion.transform.position = transform.position;
        explosion.GetComponent <IBullet>().Fire();
        DropPoint();
        weapon    = null;
        waitTimer = null;
        enemys.Remove(this);

        if (tag == "Boss")
        {
            GUIManager.ShowView("GameWinUI", Vector3.zero);
            Time.timeScale = 0.1f;
        }

        Destroy(gameObject);
    }
Example #19
0
    //射击方法,需要重写
    public override void Fire()
    {
        Vector3 vec = new Vector3(0, 0, 1);

        for (int i = -1; i < 2; i++)
        {
            GameObject bullet = BulletUtil.LoadBullet(shooter.GetBulletName());

            bullet.transform.position = shooter.GetPos() + new Vector3(i * 0.5f, 0, 0);

            // bullet.transform.forward = Quaternion.AngleAxis(30 * i, Vector3.up) * vec;

            IBullet bulletInfo = bullet.GetComponent <IBullet>();
            bulletInfo.shooter = shooter;



            bulletInfo.Fire();
        }
    }
Example #20
0
    IEnumerator ZZShotgun()
    {
        IBullet[] bullets = new IBullet[20];
        Vector3   vec     = new Vector3(0, 0, 1);

        for (int a = 0; a < 1; a++)
        {
            for (int i = 0; i < 12; i++)
            {
                GameObject bullet = BulletUtil.LoadBullet(shooter.GetBulletName());

                bullet.transform.position = shooter.GetPos();

                bullet.transform.forward = Quaternion.AngleAxis(30 * i, Vector3.up) * vec;
                IBullet bulletInfo = bullet.GetComponent <IBullet>();
                bulletInfo.shooter = shooter;
                bulletInfo.Fire();
                bullets[i]       = bulletInfo;
                bulletInfo.speed = 3.0f;
                yield return(new WaitForSeconds(0.1f));
            }
            yield return(new WaitForSeconds(1.0f));

            for (int i = 0; i < 12; i++)
            {
                bullets[i].Recycle();
                for (int j = -8; j < 29; j++)
                {
                    GameObject bullet2 = BulletUtil.LoadBullet(shooter.GetBulletName());

                    bullet2.transform.position = bullets[i].transform.position;

                    bullet2.transform.forward = Quaternion.AngleAxis(10 * j, Vector3.up) * vec;
                    IBullet bulletInfo2 = bullet2.GetComponent <IBullet>();
                    bulletInfo2.shooter = shooter;
                    bulletInfo2.Fire();
                    bulletInfo2.speed = 3.0f;
                }
            }
        }
    }
Example #21
0
    IEnumerator ZZShotgun()
    {
        Vector3 vec = new Vector3(0, 0, -1);

        for (int i = 0; i < 3; i++)
        {
            for (int j = 0; j < 3; j++)
            {
                GameObject bullet = BulletUtil.LoadBullet(shooter.GetBulletName());

                bullet.transform.position = shooter.GetPos();

                bullet.transform.forward = vec;
                IBullet bulletInfo = bullet.GetComponent <IBullet>();
                bulletInfo.shooter = shooter;
                bulletInfo.Fire();
                yield return(new WaitForSeconds(0.3f));
            }
            yield return(new WaitForSeconds(1f));
        }
    }
Example #22
0
    void shoot()
    {
        for (int i = 0; i < targetArray.Length; i++)
        {
            GameObject bullet = shooterType == ShooterTypeEnum.FRIENDLY ? FriendlyBulletObjectPool.instance.getPooledObject()
                                                                        : EnemyBulletObjectPool.instance.getPooledObject();

            Vector3 launchOrigin = new Vector3(transform.position.x, bullet.transform.position.y, transform.position.z)
                                   + targetArray[i].normalized * GameConstants.gridSize / 2;

            if (bullet != null)
            {
                bullet.transform.position = launchOrigin;
                bullet.transform.rotation = transform.rotation;
            }
            else
            {
                bullet = (GameObject)Instantiate(bulletPrefab.gameObject, launchOrigin, transform.rotation);
            }
            BulletUtil.activateBullet(bullet);

            BulletMovement bulletMovementComponent = bullet.GetComponent <BulletMovement>();
            if (bulletMovementComponent != null)
            {
                bulletMovementComponent.setTarget(targetArray[i]);
                bulletMovementComponent.setVelocity(velocity);
                bulletMovementComponent.setType(shooterType);
            }

            BulletDamage bulletDamageComponent = bullet.GetComponent <BulletDamage>();
            if (bulletDamageComponent != null)
            {
                bulletDamageComponent.setDamage(damage);
            }
        }
    }
Example #23
0
    //射击方法,需要重写
    public virtual void Fire()
    {
        Vector3 vec;

        if (target == null)
        {
            vec = shooter.GetObj().transform.forward;
        }
        else
        {
            vec = GetVec();
        }

        GameObject bullet = BulletUtil.LoadBullet(shooter.GetBulletName());

        bullet.transform.position = shooter.GetPos();
        bullet.transform.forward  = vec;
        bullet.GetComponent <IBullet>().shooter = shooter;
        if (target)
        {
            bullet.GetComponent <IBullet>().target = target;
        }
        bullet.GetComponent <IBullet>().Fire();
    }
 public HashSet <string> GetTargetTags()
 {
     return(BulletUtil.GetBulletModel(BulletType.Player).GetTargetTags());
 }
    public void Init(BulletType type)
    {
        IBulletModel model = BulletUtil.GetBulletModel(type);

        Init(model);
    }
 public int GetAttack()
 {
     return(BulletUtil.GetBulletModel(BulletType.Player).GetAttack());
 }
 public void GetBulletSpeed(Action <float> callBack)
 {
     BulletUtil.GetBulletModel(BulletType.Player).GetBulletSpeed(callBack);
 }
Example #28
0
    IEnumerator ZZShotgun()
    {
        Vector3    vec       = new Vector3(0, 0, -1);
        Quaternion leftrota  = Quaternion.AngleAxis(-10, Vector3.up);
        Quaternion rightrota = Quaternion.AngleAxis(10, Vector3.up);

        for (int i = 0; i < 3; i++)
        {
            for (int j = 9; j < 14; j++)
            {
                switch (j)
                {
                case 9:
                    GameObject bullet = BulletUtil.LoadBullet(shooter.GetBulletName());

                    bullet.transform.position = shooter.GetPos();

                    bullet.transform.forward = vec;
                    IBullet bulletInfo = bullet.GetComponent <IBullet>();
                    bulletInfo.shooter = shooter;
                    bulletInfo.Fire();
                    break;

                case 10:
                    GameObject bullet2 = BulletUtil.LoadBullet(shooter.GetBulletName());

                    bullet2.transform.position = shooter.GetPos();

                    bullet2.transform.forward = leftrota * vec;
                    IBullet bulletInfo2 = bullet2.GetComponent <IBullet>();
                    bulletInfo2.shooter = shooter;
                    bulletInfo2.Fire();
                    break;

                case 11:
                    GameObject bullet3 = BulletUtil.LoadBullet(shooter.GetBulletName());

                    bullet3.transform.position = shooter.GetPos();

                    bullet3.transform.forward = rightrota * vec;
                    IBullet bulletInfo3 = bullet3.GetComponent <IBullet>();
                    bulletInfo3.shooter = shooter;
                    bulletInfo3.Fire();
                    break;

                case 12:
                    GameObject bullet4 = BulletUtil.LoadBullet(shooter.GetBulletName());

                    bullet4.transform.position = shooter.GetPos();

                    bullet4.transform.forward = rightrota * rightrota * vec;
                    IBullet bulletInfo4 = bullet4.GetComponent <IBullet>();
                    bulletInfo4.shooter = shooter;
                    bulletInfo4.Fire();
                    break;

                case 13:
                    GameObject bullet5 = BulletUtil.LoadBullet(shooter.GetBulletName());

                    bullet5.transform.position = shooter.GetPos();

                    bullet5.transform.forward = leftrota * leftrota * vec;
                    IBullet bulletInfo5 = bullet5.GetComponent <IBullet>();
                    bulletInfo5.shooter = shooter;
                    bulletInfo5.Fire();
                    break;
                }
            }
            yield return(new WaitForSeconds(0.5f));
        }
    }