예제 #1
0
    /// <summary>
    /// 开始发射
    /// </summary>
    /// <param name="launchType"></param>
    public void StartLaunch(LaunchTypeEnum launchType, MiniGameBarrageBulletTypeEnum bulletType, Vector3 targetPositon, float launchSpeed)
    {
        AudioHandler.Instance.PlaySound(AudioSoundEnum.Shot);
        animEjector.SetTrigger("Launch");
        switch (launchType)
        {
        case LaunchTypeEnum.Single:
            LaunchSingle(bulletType, targetPositon, launchSpeed);
            break;

        case LaunchTypeEnum.Double:
            LaunchDouble(bulletType, targetPositon, launchSpeed);
            break;

        case LaunchTypeEnum.Triple:
            LaunchTriple(bulletType, targetPositon, launchSpeed);
            break;

        case LaunchTypeEnum.Four:
            LaunchFour(bulletType, targetPositon, launchSpeed);
            break;

        case LaunchTypeEnum.Five:
            LaunchFive(bulletType, targetPositon, launchSpeed);
            break;
        }
    }
예제 #2
0
 /// <summary>
 /// 四连发
 /// </summary>
 /// <param name="targetPositon"></param>
 /// <param name="shotSpeed"></param>
 public void LaunchFour(MiniGameBarrageBulletTypeEnum bulletType, Vector3 targetPositon, float shotSpeed)
 {
     CreateBullet(bulletType, targetPositon + new Vector3(2, 2, 1), shotSpeed);
     CreateBullet(bulletType, targetPositon + new Vector3(-2, -2, 1), shotSpeed);
     CreateBullet(bulletType, targetPositon + new Vector3(5, 5, 1), shotSpeed);
     CreateBullet(bulletType, targetPositon + new Vector3(-5, -5, 1), shotSpeed);
 }
예제 #3
0
 /// <summary>
 /// 五连发
 /// </summary>
 /// <param name="targetPositon"></param>
 /// <param name="shotSpeed"></param>
 public void LaunchFive(MiniGameBarrageBulletTypeEnum bulletType, Vector3 targetPositon, float shotSpeed)
 {
     CreateBullet(bulletType, targetPositon, shotSpeed);
     CreateBullet(bulletType, targetPositon + new Vector3(3, 3, 1), shotSpeed);
     CreateBullet(bulletType, targetPositon + new Vector3(-3, -3, 1), shotSpeed);
     CreateBullet(bulletType, targetPositon + new Vector3(6, 6, 1), shotSpeed);
     CreateBullet(bulletType, targetPositon + new Vector3(-6, -6, 1), shotSpeed);
 }
예제 #4
0
    /// <summary>
    ///  创建子弹
    /// </summary>
    /// <param name="launchPositon"></param>
    /// <param name="force"></param>
    private void CreateBullet(MiniGameBarrageBulletTypeEnum bulletType, Vector3 targetPositon, float force)
    {
        Sprite spBullet = null;
        RuntimeAnimatorController animatorController = null;
        int  damage     = 10;
        bool hasDesAnim = false;

        switch (bulletType)
        {
        case MiniGameBarrageBulletTypeEnum.Stone:
            damage             = 10;
            spBullet           = MiniGameHandler.Instance.handlerForBarrage.miniGameBuilder.spStone;
            animatorController = MiniGameHandler.Instance.handlerForBarrage.miniGameBuilder.animatorControllerForStone;
            hasDesAnim         = true;
            break;

        case MiniGameBarrageBulletTypeEnum.Arrow:
            damage             = 10;
            spBullet           = MiniGameHandler.Instance.handlerForBarrage.miniGameBuilder.spArrow;
            animatorController = MiniGameHandler.Instance.handlerForBarrage.miniGameBuilder.animatorControllerForArrow;
            break;

        case MiniGameBarrageBulletTypeEnum.Darts:
            damage             = 20;
            spBullet           = MiniGameHandler.Instance.handlerForBarrage.miniGameBuilder.spDarts;
            animatorController = MiniGameHandler.Instance.handlerForBarrage.miniGameBuilder.animatorControllerForDarts;
            break;

        case MiniGameBarrageBulletTypeEnum.Fireball:
            damage             = 30;
            spBullet           = MiniGameHandler.Instance.handlerForBarrage.miniGameBuilder.spFireball;
            animatorController = MiniGameHandler.Instance.handlerForBarrage.miniGameBuilder.animatorControllerForFireball;
            break;

        case MiniGameBarrageBulletTypeEnum.Egg:
            damage             = 40;
            spBullet           = MiniGameHandler.Instance.handlerForBarrage.miniGameBuilder.spEgg;
            animatorController = MiniGameHandler.Instance.handlerForBarrage.miniGameBuilder.animatorControllerForEgg;
            hasDesAnim         = true;
            break;
        }
        //设置发射器朝向角度
        mAngelsTarget = VectorUtil.GetAngle(objEjector.transform.position, targetPositon);
        //创建子弹
        GameObject objBullet = Instantiate(objBulletModel, objBulletContainer.transform);

        objBullet.SetActive(true);
        objBullet.transform.position = objEjector.transform.position;
        MiniGameBarrageBulletCpt bulletCpt = objBullet.GetComponent <MiniGameBarrageBulletCpt>();

        bulletCpt.SetBulletData(bulletType, spBullet, animatorController, damage, hasDesAnim);
        //发射子弹
        bulletCpt.LaunchBullet(targetPositon, force);
    }
예제 #5
0
 /// <summary>
 /// 设置子弹数据
 /// </summary>
 public void SetBulletData(
     MiniGameBarrageBulletTypeEnum miniGameBarrageBulletType,
     Sprite spIcon,
     RuntimeAnimatorController animatorController,
     int damage,
     bool hasDestroyAnim)
 {
     animBullet.runtimeAnimatorController = animatorController;
     this.hasDestroyAnim = hasDestroyAnim;
     bulletDamage        = damage;
     srBullet.sprite     = spIcon;
 }
예제 #6
0
 /// <summary>
 /// 三连发
 /// </summary>
 /// <param name="targetPositon"></param>
 /// <param name="shotSpeed"></param>
 public void LaunchTriple(MiniGameBarrageBulletTypeEnum bulletType, Vector3 targetPositon, float shotSpeed)
 {
     CreateBullet(bulletType, targetPositon + new Vector3(4, 4, 1), shotSpeed);
     CreateBullet(bulletType, targetPositon + new Vector3(-4, -4, 1), shotSpeed);
     CreateBullet(bulletType, targetPositon, shotSpeed);
 }
예제 #7
0
 /// <summary>
 ///  单发模式
 /// </summary>
 /// <param name="targetPositon">目标位置</param>
 /// <param name="shotSpeed">发射速度</param>
 public void LaunchSingle(MiniGameBarrageBulletTypeEnum bulletType, Vector3 targetPositon, float shotSpeed)
 {
     CreateBullet(bulletType, targetPositon, shotSpeed);
 }