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; }
/// <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); }
/// <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); } }
/// <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)); } }