예제 #1
0
 private void OnTriggerEnter2D(Collider2D collision)
 {
     if (!mIsDestroy)
     {
         MiniGameBarrageWallCpt  wallCpt = collision.GetComponent <MiniGameBarrageWallCpt>();
         NpcAIMiniGameBarrageCpt npcCpt  = collision.GetComponent <NpcAIMiniGameBarrageCpt>();
         if (wallCpt || npcCpt)
         {
             mIsDestroy = true;
             StopMove();
             //摧毁处理
             if (hasDestroyAnim)
             {
                 animBullet.SetBool("IsDestroy", true);
             }
             else
             {
                 DestroyBullet();
             }
             //如果是NPC 扣血
             if (npcCpt)
             {
                 npcCpt.UnderAttack(bulletDamage);
             }
         }
     }
 }
 /// <summary>
 /// 设置镜头对象
 /// </summary>
 /// <param name="npcCpt"></param>
 public void SetCameraFollowObj(NpcAIMiniGameBarrageCpt npcCpt)
 {
     base.SetCameraFollowObj(npcCpt.gameObject);
     characterMoveCpt = npcCpt.characterMoveCpt;
     characterMoveCpt.isManualMove = true;
     npcAI = npcCpt;
 }
예제 #3
0
    /// <summary>
    /// 创建一个NPC
    /// </summary>
    public NpcAIMiniGameBarrageCpt CreatePlayer(MiniGameCharacterBean characterData, Vector3 position)
    {
        GameObject objPlayer           = Instantiate(objPlayerContainer, objPlayerModel, position);
        NpcAIMiniGameBarrageCpt npcCpt = objPlayer.GetComponent <NpcAIMiniGameBarrageCpt>();

        npcCpt.SetData(characterData);
        listGamePlayer.Add(npcCpt);
        return(npcCpt);
    }
예제 #4
0
 /// <summary>
 /// 创建所有玩家
 /// </summary>
 /// <param name="userData"></param>
 /// <param name="listEnemy"></param>
 public void CreateAllCharacter(List <MiniGameCharacterBean> listUserData, Vector3 userStartPosition)
 {
     //创建操作角色
     foreach (MiniGameCharacterBean itemUserData in listUserData)
     {
         NpcAIMiniGameBarrageCpt      npcCpt = CreatePlayer(itemUserData, userStartPosition);
         ControlForMiniGameBarrageCpt controlForMiniGameBarrageCpt = GameControlHandler.Instance.manager.GetControl <ControlForMiniGameBarrageCpt>(GameControlHandler.ControlEnum.MiniGameBarrage);
         controlForMiniGameBarrageCpt.SetCameraFollowObj(npcCpt);
     }
 }
예제 #5
0
    /// <summary>
    /// 开始射击目标
    /// </summary>
    /// <returns></returns>
    public IEnumerator StartLaunch()
    {
        while (true)
        {
            //获取所有发射器
            List <MiniGameBarrageEjectorCpt> listEjector = miniGameBuilder.GetEjector();
            if (!CheckUtil.ListIsNull(listEjector))
            {
                foreach (MiniGameBarrageEjectorCpt itemEjector in listEjector)
                {
                    //获取所有的目标
                    List <NpcAIMiniGameBarrageCpt> listPlayer = miniGameBuilder.GetPlayerList();
                    //随机获取一个NPC
                    NpcAIMiniGameBarrageCpt npcCpt = RandomUtil.GetRandomDataByList(listPlayer);
                    Vector3 launchTarget           = Vector3.zero;
                    if (npcCpt != null)
                    {
                        launchTarget = npcCpt.transform.position;
                    }
                    //获取发射类型
                    if (CheckUtil.ArrayIsNull(miniGameData.launchTypes))
                    {
                        miniGameData.launchTypes = new MiniGameBarrageEjectorCpt.LaunchTypeEnum[]
                        {
                            MiniGameBarrageEjectorCpt.LaunchTypeEnum.Single
                        };
                    }
                    MiniGameBarrageEjectorCpt.LaunchTypeEnum launchType = RandomUtil.GetRandomDataByArray(miniGameData.launchTypes);

                    itemEjector.StartLaunch(launchType, miniGameData.bulletType, launchTarget, miniGameData.launchSpeed);
                }
            }
            //发射间隔时间
            float launchIntervalTime = miniGameData.launchInterval;
            if (launchIntervalTime < 0.1f)
            {
                launchIntervalTime = 0.1f;
            }
            yield return(new WaitForSeconds(launchIntervalTime));
        }
    }