public void SpawnAllDaoJu() { if (!IsSpawnDJ) { return; } PointList = new List <Transform>(); CheckDaoJuSpawnPointList(); int randVal = 0; int max = DaoJuArray.Length; Transform trEndPoint = null; for (int i = 0; i < max; i++) { randVal = Random.Range(0, 10000) % 100; if (randVal >= DaoJuGaiLv[i]) { continue; } trEndPoint = GetDaoJuSpawnPoint(i); if (trEndPoint == null) { continue; } GameObject daoJuObj = (GameObject)Instantiate(DaoJuArray[i], transform.position, transform.rotation); BuJiBaoCtrl buJiScript = daoJuObj.GetComponent <BuJiBaoCtrl>(); buJiScript.SetIsSpawnDaoJu(); buJiScript.MoveDaoJuToPoint(trEndPoint); } }
// public PlayerEnum TestPlayerIndex; // public Transform DaoJuTest; // Update is called once per frame // void Update() // { // if (pcvr.bIsHardWare && Camera.main == null) { // return; // } // // if (Input.GetKeyUp(KeyCode.M)) { // MoveDaoJuObjToPlayer(TestPlayerIndex, DaoJuTest); // } // } public void MoveDaoJuObjToPlayer(PlayerEnum indexVal, Transform daoJuTr) { int indexDJ = (int)indexVal - 1; Vector3[] path = new Vector3[2]; path[0] = Camera.main.WorldToScreenPoint(daoJuTr.position); path[0].x = (XkGameCtrl.ScreenWidth * path[0].x) / Screen.width; path[0].y = (XkGameCtrl.ScreenHeight * path[0].y) / Screen.height; BuJiBaoCtrl buJiScript = daoJuTr.GetComponent <BuJiBaoCtrl>(); BuJiBaoType buJiBaoVal = buJiScript.BuJiBao; switch (buJiBaoVal) { case BuJiBaoType.ShuangBeiFenShuDJ: path[1] = DaoJuEndTr[8 + indexDJ].position; break; case BuJiBaoType.JiSuDJ: path[1] = DaoJuEndTr[12 + indexDJ].position; break; case BuJiBaoType.NLHuDun: case BuJiBaoType.HuoLiAllOpenDJ: path[1] = DaoJuEndTr[4 + indexDJ].position; break; default: path[1] = DaoJuEndTr[indexDJ].position; break; } int daoJuMax = DaoJuObjList.Count; GameObject daoJu = null; for (int i = 0; i < daoJuMax; i++) { if (DaoJuObjList[i] != null && !DaoJuObjList[i].activeSelf) { daoJu = DaoJuObjList[i]; break; } } if (daoJu == null) { daoJu = DaoJuMoveCtrl.SpawnDaoJuMoveObj(transform); DaoJuObjList.Add(daoJu); } DaoJuMoveCtrl daoJuMove = daoJu.GetComponent <DaoJuMoveCtrl>(); int indexBJ = (int)buJiScript.BuJiBao - 2; //Debug.Log("indexBJ *** "+indexBJ); daoJuMove.MoveDaoJuToPlayer(DaoJuTexture[indexBJ], indexVal, buJiScript.BuJiBao, path); }
/// <summary> /// 创建大血包道具. /// </summary> bool CreateBigXueBaoDaoJu(PlayerEnum playerIndex) { bool isCreate = false; if (m_BigXueBaoDt != null && m_BigXueBaoDt.XueBaoPrefab != null) { int randVal = 0; randVal = Random.Range(0, 10000) % 100; if (randVal >= m_BigXueBaoDt.GaiLv) { //没有随机上. } else { Transform trEndPoint = null; //PointList = new List<Transform>(); //CheckDaoJuSpawnPointList(); //trEndPoint = GetDaoJuSpawnPoint(0); if (XKPlayerMoveCtrl.GetInstance(playerIndex) != null) { trEndPoint = XKPlayerMoveCtrl.GetInstance(playerIndex).transform; } if (trEndPoint == null) { //没有找到道具落点. } else { //产生道具. GameObject daoJuObj = (GameObject)Instantiate(m_BigXueBaoDt.XueBaoPrefab, transform.position, transform.rotation); BuJiBaoCtrl buJiScript = daoJuObj.GetComponent <BuJiBaoCtrl>(); if (buJiScript != null) { isCreate = true; buJiScript.SetIsSpawnDaoJu(playerIndex); //血包道具自动吸附到玩家位置. buJiScript.MoveDaoJuToPoint(trEndPoint); } } } } return(isCreate); }
void StartSpawnNpcAmmo() { if (AudioNpcFire != null) { if (AudioNpcFire.isPlaying) { AudioNpcFire.Stop(); } AudioNpcFire.Play(); } GameObject obj = null; Transform tran = null; if (AmmoLiZiPrefab != null) { obj = SpawnParticleCom.SpawnParticleObject(AmmoLiZiPrefab, AmmoSpawnTran.position, AmmoSpawnTran.rotation); if (obj.transform.parent != XkGameCtrl.NpcAmmoArray) { obj.transform.parent = XkGameCtrl.NpcAmmoArray; } } PlayerAmmoCtrl ammoPlayerScript = AmmoPrefab.GetComponent <PlayerAmmoCtrl>(); if (ammoPlayerScript != null && !XkGameCtrl.GetInstance().IsCartoonShootTest) { return; } obj = GetNpcAmmoFromList(AmmoSpawnTran); if (obj == null) { return; } tran = obj.transform; tran.parent = XkGameCtrl.NpcAmmoArray; NpcAmmoCtrl AmmoScript = obj.GetComponent <NpcAmmoCtrl>(); if (AmmoScript != null) { AmmoScript.SetNpcScriptInfo(NpcScript); AmmoScript.SetIsAimFeiJiPlayer(IsAimFeiJiPlayer); } else { PlayerAmmoCtrl ammoScript = obj.GetComponent <PlayerAmmoCtrl>(); if (ammoScript != null) { Vector3 startPos = tran.position; Vector3 firePos = tran.position; Vector3 ammoForward = tran.forward; firePos = Random.Range(300f, 400f) * ammoForward + startPos; float fireDisVal = Vector3.Distance(firePos, startPos); RaycastHit hit; LayerMask FireLayer = XkGameCtrl.GetInstance().PlayerAmmoHitLayer; if (Physics.Raycast(startPos, ammoForward, out hit, fireDisVal, FireLayer.value)) { //Debug.Log("npc fire PlayerAmmo, fire obj -> "+hit.collider.name); firePos = hit.point; XKNpcHealthCtrl healthScript = hit.collider.GetComponent <XKNpcHealthCtrl>(); if (healthScript != null) { healthScript.OnDamageNpc(ammoScript.AmmoType, PlayerEnum.Null); } BuJiBaoCtrl buJiBaoScript = hit.collider.GetComponent <BuJiBaoCtrl>(); if (buJiBaoScript != null) { buJiBaoScript.RemoveBuJiBao(PlayerEnum.Null); //buJiBaoScript } } ammoScript.StartMoveAmmo(firePos, PlayerEnum.Null); } } }
// public void SetNpcIsDoFire(NpcMark script) // { // //Debug.Log("Unity:"+"SetNpcIsDoFire -> IsFireFeiJiNpc "+script.IsFireFeiJiNpc); // if (!NpcScript.IsAniMove) { // return; // } // // if (SpawnPointScript == null) { // return; // } // // Transform npcPath = SpawnPointScript.NpcPath; // Transform markPar = script.transform.parent; // if (npcPath != markPar) { // return; // } // //Debug.Log("Unity:"+"***********SetNpcIsDoFire -> IsFireFeiJiNpc "+script.IsFireFeiJiNpc); // NpcScript.SetIsDoFireAnimation(script.IsFireFeiJiNpc); // NpcScript.SetFeiJiMarkInfo(script); // } void Update() { if (!XkGameCtrl.IsMoveOnPlayerDeath) { if (!XkGameCtrl.IsActivePlayerOne && !XkGameCtrl.IsActivePlayerTwo) { return; } } if (IsDeathNPC) { return; } if (!IsTeShuFireNpc) { return; } if (TimeTeShuFire.Length < 1) { return; } //if (Network.peerType == NetworkPeerType.Server) { // return; //} if ((JiFenJieMianCtrl.GetInstance() != null && JiFenJieMianCtrl.GetInstance().GetIsShowFinishTask()) || GameOverCtrl.IsShowGameOver) { return; } if (!NpcScript.GetIsDoFireAnimation()) { return; } if (XkGameCtrl.CheckNpcIsMoveToCameraBack(transform)) { return; } if (XkGameCtrl.GetInstance().IsCreatAmmoOnBoss == false) { if (XkPlayerCtrl.GetInstanceFeiJi().m_SpawnNpcManage.GetIsHaveCaiPiaoBoss() == true) { if (NpcScript != null && NpcScript.IsCaiPiaoZhanChe == true) { } else { //有彩票boss产生,不再继续发射子弹. return; } } } GameObject obj = null; Transform tran = null; for (int i = 0; i < TimeTeShuFire.Length; i++) { TimeTeShuFire[i] += Time.deltaTime; if (TimeTeShuFire[i] >= TimeFireAmmo[i]) { TimeTeShuFire[i] = 0f; //fire ammo // Debug.Log("Unity:"+"teShuFireNpc -> i = "+i); if (i < AudioTeShuNpcFire.Length && AudioTeShuNpcFire[i] != null) { if (AudioTeShuNpcFire[i].isPlaying) { AudioTeShuNpcFire[i].Stop(); } AudioTeShuNpcFire[i].Play(); } //if (AmmoLZPrefabTeShu != null && AmmoLZPrefabTeShu[i] != null && AmmoLZObjTeShu[i] == null) { if (AmmoLZPrefabTeShu != null && AmmoLZPrefabTeShu[i] != null) { obj = (GameObject)Instantiate(AmmoLZPrefabTeShu[i], AmmoSpawnTranTeShu[i].position, AmmoSpawnTranTeShu[i].rotation); tran = obj.transform; //AmmoLZObjTeShu[i] = obj; XkGameCtrl.CheckObjDestroyThisTimed(obj); tran.parent = AmmoSpawnTranTeShu[i]; } PlayerAmmoCtrl ammoPlayerScript = AmmoPrefabTeShu[i].GetComponent <PlayerAmmoCtrl>(); if (ammoPlayerScript != null && !XkGameCtrl.GetInstance().IsCartoonShootTest) { continue; } obj = GetNpcAmmoFromList(AmmoSpawnTranTeShu[i], AmmoPrefabTeShu[i]); if (obj == null) { return; } tran = obj.transform; tran.parent = XkGameCtrl.NpcAmmoArray; NpcAmmoCtrl ammoNpcScript = obj.GetComponent <NpcAmmoCtrl>(); if (ammoNpcScript != null) { ammoNpcScript.SetNpcScriptInfo(NpcScript); ammoNpcScript.SetIsAimFeiJiPlayer(IsAimFeiJiPlayer); } else { PlayerAmmoCtrl ammoScript = obj.GetComponent <PlayerAmmoCtrl>(); if (ammoScript != null) { Vector3 startPos = tran.position; Vector3 firePos = tran.position; Vector3 ammoForward = tran.forward; firePos = Random.Range(300f, 400f) * ammoForward + startPos; float fireDisVal = Vector3.Distance(firePos, startPos); RaycastHit hit; LayerMask FireLayer = XkGameCtrl.GetInstance().PlayerAmmoHitLayer; if (Physics.Raycast(startPos, ammoForward, out hit, fireDisVal, FireLayer.value)) { //Debug.Log("Unity:"+"npc fire PlayerAmmo, fire obj -> "+hit.collider.name); firePos = hit.point; XKNpcHealthCtrl healthScript = hit.collider.GetComponent <XKNpcHealthCtrl>(); if (healthScript != null) { healthScript.OnDamageNpc(ammoScript.DamageNpc, PlayerEnum.Null); } BuJiBaoCtrl buJiBaoScript = hit.collider.GetComponent <BuJiBaoCtrl>(); if (buJiBaoScript != null) { buJiBaoScript.RemoveBuJiBao(PlayerEnum.Null); //buJiBaoScript } } ammoScript.StartMoveAmmo(firePos, PlayerEnum.Null, null, AmmoMovePath); } } // if (AmmoLiZiPrefab != null) { // obj = (GameObject)Instantiate(AmmoLiZiPrefab, AmmoSpawnTran.position, AmmoSpawnTran.rotation); // tran = obj.transform; // tran.parent = XkGameCtrl.MissionCleanup; // } } } }
void StartSpawnNpcAmmo() { if (XkGameCtrl.CheckNpcIsMoveToCameraBack(transform)) { return; } if (AudioNpcFire != null) { if (AudioNpcFire.isPlaying) { AudioNpcFire.Stop(); } AudioNpcFire.Play(); } GameObject obj = null; Transform tran = null; if (AmmoLiZiPrefab != null && AmmoLiZiObj == null) { obj = (GameObject)Instantiate(AmmoLiZiPrefab, AmmoSpawnTran.position, AmmoSpawnTran.rotation); tran = obj.transform; tran.parent = XkGameCtrl.NpcAmmoArray; AmmoLiZiObj = obj; XkGameCtrl.CheckObjDestroyThisTimed(obj); } if (AmmoPrefab == null) { return; } PlayerAmmoCtrl ammoPlayerScript = AmmoPrefab.GetComponent <PlayerAmmoCtrl>(); if (ammoPlayerScript != null && !XkGameCtrl.GetInstance().IsCartoonShootTest) { return; } obj = GetNpcAmmoFromList(AmmoSpawnTran); if (obj == null) { return; } tran = obj.transform; tran.parent = XkGameCtrl.NpcAmmoArray; NpcAmmoCtrl AmmoScript = obj.GetComponent <NpcAmmoCtrl>(); if (AmmoScript != null) { AmmoScript.SetNpcScriptInfo(NpcScript); AmmoScript.SetIsAimFeiJiPlayer(IsAimFeiJiPlayer); for (int i = 0; i < AmmoSpawnArray.Length; i++) { if (AmmoSpawnArray[i] != null) { obj = (GameObject)Instantiate(AmmoPrefab, AmmoSpawnArray[i].position, AmmoSpawnArray[i].rotation); tran = obj.transform; tran.parent = XkGameCtrl.NpcAmmoArray; AmmoScript = obj.GetComponent <NpcAmmoCtrl>(); AmmoScript.SetNpcScriptInfo(NpcScript); AmmoScript.SetIsAimFeiJiPlayer(IsAimFeiJiPlayer); } } } else { PlayerAmmoCtrl ammoScript = obj.GetComponent <PlayerAmmoCtrl>(); if (ammoScript != null) { Vector3 startPos = tran.position; Vector3 firePos = tran.position; Vector3 ammoForward = tran.forward; firePos = Random.Range(300f, 400f) * ammoForward + startPos; float fireDisVal = Vector3.Distance(firePos, startPos); RaycastHit hit; LayerMask FireLayer = XkGameCtrl.GetInstance().PlayerAmmoHitLayer; if (Physics.Raycast(startPos, ammoForward, out hit, fireDisVal, FireLayer.value)) { //Debug.Log("Unity:"+"npc fire PlayerAmmo, fire obj -> "+hit.collider.name); firePos = hit.point; XKNpcHealthCtrl healthScript = hit.collider.GetComponent <XKNpcHealthCtrl>(); if (healthScript != null) { healthScript.OnDamageNpc(ammoScript.DamageNpc, PlayerEnum.Null); } BuJiBaoCtrl buJiBaoScript = hit.collider.GetComponent <BuJiBaoCtrl>(); if (buJiBaoScript != null) { buJiBaoScript.RemoveBuJiBao(PlayerEnum.Null); //buJiBaoScript } } ammoScript.StartMoveAmmo(firePos, PlayerEnum.Null); } } }
IEnumerator PlayPaoGuanAnimation() { CountPaoGuanAni++; if (CountPaoGuanAni > 1) { //Debug.LogWarning("Unity:"+"PlayPaoGuanAnimation -> CountPaoGuanAni "+CountPaoGuanAni); yield break; } int count = 0; int maxCount = 1; float speed = PaoGuanZhenFu / maxCount; bool isBackPaoGuan = false; bool isFireAmmo = false; IsPlayPaoGuanAnimation = true; do { if (IsDeathNpc || GameOverCtrl.IsShowGameOver) { yield break; } if (IsStopAnimation || !IsDoFireAnimation || Time.realtimeSinceStartup - TimeStartSpawn < TimeFireDelay || JiFenJieMianCtrl.GetInstance().GetIsShowFinishTask()) { yield return(new WaitForSeconds(0.1f)); continue; } if (!isBackPaoGuan) { PaoGuan.position -= PaoGuan.forward * speed; count++; if (count >= maxCount) { isBackPaoGuan = true; } if (count == 1 && !isFireAmmo) { isFireAmmo = true; PlayAudioCannonFire(); PlayerAmmoCtrl ammoPlayerScript = DaPaoAmmo.GetComponent <PlayerAmmoCtrl>(); if (ammoPlayerScript != null && !XkGameCtrl.GetInstance().IsCartoonShootTest) { yield break; } GameObject obj = GetNpcAmmoFromList(SpawnAmmoPoint[0]); if (obj == null) { yield break; } NpcAmmoCtrl AmmoScript = obj.GetComponent <NpcAmmoCtrl>(); Transform tran = obj.transform; tran.parent = XkGameCtrl.NpcAmmoArray; if (AmmoScript != null) { AmmoScript.SetIsAimFeiJiPlayer(false); } else { PlayerAmmoCtrl ammoScript = obj.GetComponent <PlayerAmmoCtrl>(); if (ammoScript != null) { Vector3 startPos = tran.position; Vector3 firePos = tran.position; Vector3 ammoForward = tran.forward; firePos = Random.Range(300f, 400f) * ammoForward + startPos; float fireDisVal = Vector3.Distance(firePos, startPos); RaycastHit hit; LayerMask FireLayer = XkGameCtrl.GetInstance().PlayerAmmoHitLayer; if (Physics.Raycast(startPos, ammoForward, out hit, fireDisVal, FireLayer.value)) { //Debug.Log("Unity:"+"npc fire PlayerAmmo, fire obj -> "+hit.collider.name); firePos = hit.point; XKNpcHealthCtrl healthScript = hit.collider.GetComponent <XKNpcHealthCtrl>(); if (healthScript != null) { healthScript.OnDamageNpc(ammoScript.DamageNpc, PlayerEnum.Null); } BuJiBaoCtrl buJiBaoScript = hit.collider.GetComponent <BuJiBaoCtrl>(); if (buJiBaoScript != null) { buJiBaoScript.RemoveBuJiBao(PlayerEnum.Null); //buJiBaoScript } } ammoScript.StartMoveAmmo(firePos, PlayerEnum.Null, AmmoMovePath); } } if (!XkGameCtrl.IsNoFireLiZi) { obj = (GameObject)Instantiate(DaPaoAmmoLiZi, SpawnAmmoPoint[0].position, SpawnAmmoPoint[0].rotation); tran = obj.transform; XkGameCtrl.CheckObjDestroyThisTimed(obj); tran.parent = SpawnAmmoPoint[0]; } } } else { PaoGuan.position += PaoGuan.forward * speed; count--; if (count <= 0) { IsPlayPaoGuanAnimation = false; isBackPaoGuan = false; isFireAmmo = false; count = 0; yield return(new WaitForSeconds(TimeDanGuanFire)); IsPlayPaoGuanAnimation = true; continue; } } yield return(new WaitForSeconds(PaoGuanShenSuoSD)); } while (true); }
/// <summary> /// 创建随机道具. /// </summary> public void CreatSuiJiDaoJu(PlayerEnum indexPlayer) { if (!IsCreatSuiJiDaoJu) { return; } int indexVal = (int)indexPlayer - 1; if (indexVal < 0 || indexVal > 2) { return; } if (XkPlayerCtrl.GetInstanceFeiJi().m_SpawnNpcManage.m_CaiPiaoDataManage.m_PlayerCoinData[indexVal].XuBiVal <= 0) { //不是续币玩家. return; } if (!XkPlayerCtrl.GetInstanceFeiJi().m_SpawnNpcManage.m_CaiPiaoDataManage.m_GameCaiPiaoData.GetIsChuCaiPiaoByDeCaiState(SSCaiPiaoDataManage.GameCaiPiaoData.DeCaiState.SuiJiDaoJu)) { //随机道具彩池的彩票积累的不够. return; } if (Random.Range(0f, 100f) / 100f > 0.4f) { //没有随机上产生随机道具. return; } if (XkGameCtrl.GetInstance().GetIsCreateSuiJiDaoJu() == false) { //产生随机道具的间隔时间未到. return; } UnityLog("CreatSuiJiDaoJu...................."); GameObject suiJiDaoJuPrefab = XkPlayerCtrl.GetInstanceFeiJi().m_SpawnNpcManage.m_CaiPiaoDataManage.GetSuiJiDaoJuPrefab(indexPlayer); if (suiJiDaoJuPrefab != null) { GameObject obj = (GameObject)Instantiate(suiJiDaoJuPrefab, XkGameCtrl.GetInstance().DaoJuArray, transform); if (obj != null) { BuJiBaoCtrl buJiBao = obj.GetComponent <BuJiBaoCtrl>(); if (buJiBao != null) { buJiBao.IsCaiPiaoDaoJu = true; buJiBao.SetIsSpawnDaoJu(); buJiBao.DelayRemoveSelf(indexPlayer); } //SSCaiPiaoSuiJiDaoJu suiJiDaoJu = obj.GetComponent<SSCaiPiaoSuiJiDaoJu>(); //if (suiJiDaoJu != null) //{ // suiJiDaoJu.CreatLiZi(indexPlayer); //} //else //{ // UnityLogWarning("CreatSuiJiDaoJu -> SSCaiPiaoSuiJiDaoJu was null.........."); //} } } else { UnityLogWarning("CreatSuiJiDaoJu -> suiJiDaoJuPrefab was null!"); } }
IEnumerator PlayPaoGuanAnimation() { int count = 0; int maxCount = 1; float speed = PaoGuanZhenFu / maxCount; bool isBackPaoGuan = false; bool isFireAmmo = false; IsPlayPaoGuanAnimation = true; do { // if (JiFenJieMianCtrl.GetInstance().GetIsShowFinishTask() // || IsDeathNpc // || GameOverCtrl.IsShowGameOver) { // yield break; // } if (IsStopAnimation) { yield return(new WaitForSeconds(0.3f)); continue; } if (!isBackPaoGuan) { PaoGuan.position -= PaoGuan.forward * speed; count++; if (count >= maxCount) { isBackPaoGuan = true; } if (count == 1 && !isFireAmmo) { isFireAmmo = true; PlayAudioCannonFire(); PlayerAmmoCtrl ammoPlayerScript = DaPaoAmmo.GetComponent <PlayerAmmoCtrl>(); if (ammoPlayerScript != null && !XkGameCtrl.GetInstance().IsCartoonShootTest) { yield break; } GameObject obj = GetNpcAmmoFromList(SpawnAmmoPoint[0]); if (obj == null) { yield break; } NpcAmmoCtrl AmmoScript = obj.GetComponent <NpcAmmoCtrl>(); Transform tran = obj.transform; tran.parent = XkGameCtrl.NpcAmmoArray; if (AmmoScript != null) { AmmoScript.SetIsAimPlayer(false); AmmoScript.SetIsAimFeiJiPlayer(false); } else { PlayerAmmoCtrl ammoScript = obj.GetComponent <PlayerAmmoCtrl>(); if (ammoScript != null) { Vector3 startPos = tran.position; Vector3 firePos = tran.position; Vector3 ammoForward = tran.forward; firePos = Random.Range(300f, 400f) * ammoForward + startPos; float fireDisVal = Vector3.Distance(firePos, startPos); RaycastHit hit; LayerMask FireLayer = XkGameCtrl.GetInstance().PlayerAmmoHitLayer; if (Physics.Raycast(startPos, ammoForward, out hit, fireDisVal, FireLayer.value)) { //Debug.Log("npc fire PlayerAmmo, fire obj -> "+hit.collider.name); firePos = hit.point; XKNpcHealthCtrl healthScript = hit.collider.GetComponent <XKNpcHealthCtrl>(); if (healthScript != null) { healthScript.OnDamageNpc(ammoScript.AmmoType, PlayerEnum.Null); } BuJiBaoCtrl buJiBaoScript = hit.collider.GetComponent <BuJiBaoCtrl>(); if (buJiBaoScript != null) { buJiBaoScript.RemoveBuJiBao(PlayerEnum.Null); //buJiBaoScript } } ammoScript.StartMoveAmmo(firePos, PlayerEnum.Null, AmmoMovePath); } } if (DaPaoAmmoLiZi != null) { obj = SpawnParticleCom.SpawnParticleObject(DaPaoAmmoLiZi, SpawnAmmoPoint[0].position, SpawnAmmoPoint[0].rotation); tran = obj.transform; } if (!SpawnAmmoPoint[0].gameObject.activeSelf) { SpawnAmmoPoint[0].gameObject.SetActive(true); } tran.parent = SpawnAmmoPoint[0]; } } else { PaoGuan.position += PaoGuan.forward * speed; count--; if (count <= 0) { //break; IsPlayPaoGuanAnimation = false; isBackPaoGuan = false; isFireAmmo = false; count = 0; if (IsDoFireAnimation) { yield return(new WaitForSeconds(TimeDanGuanFire)); IsPlayPaoGuanAnimation = true; continue; } } } yield return(new WaitForSeconds(PaoGuanShenSuoSD)); // Debug.Log("dp****************"+Time.deltaTime); } while (IsDoFireAnimation); }
void ClickDaoDanBtOneEvent(ButtonState state) { if (XKPlayerCamera.IndexPlayerNum != 0) { return; } if (XKTriggerClosePlayerUI.IsClosePlayerUI) { return; } if (!gameObject.activeSelf) { return; } if (!ScreenDanHeiCtrl.IsStartGame) { return; } if (!XkGameCtrl.IsActivePlayerOne) { return; } if (state != ButtonState.DOWN) { return; } if (XkGameCtrl.GetInstance().GetDaoDanNumPOne() <= 0) { XKGlobalData.GetInstance().PlayDaoDanJingGaoAudio(); return; } // if (PlayerStEnum == PlayerTypeEnum.FeiJi && XkGameCtrl.GameJiTaiSt != GameJiTaiType.FeiJiJiTai) { // return; // } // // if (PlayerStEnum == PlayerTypeEnum.TanKe && XkGameCtrl.GameJiTaiSt != GameJiTaiType.TanKeJiTai) { // return; // } if (Camera.main == null) { return; } // if (!ZhunXingCtrl.GetInstanceOne().GetActiveZhunXing() || !ZhunXingTeXiaoCtrl.IsOverTeXiaoZhunXing) { // return; // } if (Time.realtimeSinceStartup - DaoDanTimeVal[0] < DaoDanTimeMin) { XKGlobalData.GetInstance().PlayDaoDanJingGaoAudio(); return; } DaoDanTimeVal[0] = Time.realtimeSinceStartup; Vector3 ammoSpawnPos = DaoDanAmmoPosOne[0].position; GameObject obj = null; if (DaoDanAmmoParticle[0] != null) { obj = SpawnParticleCom.SpawnParticleObject(DaoDanAmmoParticle[0], ammoSpawnPos, DaoDanAmmoPosOne[0].rotation); obj.transform.parent = XkGameCtrl.PlayerAmmoArray; } if (PlayerAudio[2].isPlaying) { PlayerAudio[2].Stop(); } PlayerAudio[2].Play(); obj = SpawnPlayerAmmo(DaoDanAmmo, ammoSpawnPos, DaoDanAmmoPosOne[0].rotation); obj.transform.parent = XkGameCtrl.PlayerAmmoArray; PlayerAmmoCtrl ammoScript = obj.GetComponent <PlayerAmmoCtrl>(); XkGameCtrl.GetInstance().SubDaoDanNumPOne(); Vector3 mousePosInput = pcvr.GetPlayerMousePos(PlayerEnum.PlayerOne); Vector3 firePos = Vector3.zero; Vector3 mousePos = mousePosInput + Vector3.forward * OffsetForward; Vector3 posTmp = Camera.main.ScreenToWorldPoint(mousePos); Vector3 ammoForward = Vector3.Normalize(posTmp - ammoSpawnPos); firePos = FirePosValTmp * ammoForward + ammoSpawnPos; Ray ray = Camera.main.ScreenPointToRay(mousePosInput); RaycastHit hit; if (!IsPSAutoFire) { firePos = FirePosValTmp * ammoForward + ammoSpawnPos; if (Physics.Raycast(ray, out hit, FireRayDirLen, FireLayer.value)) { //Debug.Log("Player fire obj -> "+hit.collider.name); firePos = hit.point; BuJiBaoCtrl buJiBaoScript = hit.collider.GetComponent <BuJiBaoCtrl>(); if (buJiBaoScript != null) { buJiBaoScript.RemoveBuJiBao(PlayerEnum.PlayerOne); //buJiBaoScript } } } else { ammoForward = obj.transform.forward; firePos = FirePosValTmp * ammoForward + ammoSpawnPos; if (Physics.Raycast(ammoSpawnPos, ammoForward, out hit, FireRayDirLen, FireLayer.value)) { //Debug.Log("Player fire obj -> "+hit.collider.name); firePos = hit.point; BuJiBaoCtrl buJiBaoScript = hit.collider.GetComponent <BuJiBaoCtrl>(); if (buJiBaoScript != null) { buJiBaoScript.RemoveBuJiBao(PlayerEnum.PlayerOne); //buJiBaoScript } } } ammoScript.StartMoveAmmo(firePos, PlayerEnum.PlayerOne); //Call OtherPort Show DaoDanAmmoParticle PlayerScript.CallOtherPortSpawnPlayerAmmoParticle(1, 1, firePos); }
void CheckPlayerTwoFireBt() { if (XKPlayerCamera.IndexPlayerNum != 1) { SetQianGuanTwRot(PlayerEnum.PlayerTwo, false); return; } if (!ScreenDanHeiCtrl.IsStartGame) { SetQianGuanTwRot(PlayerEnum.PlayerTwo, false); return; } if (!XkGameCtrl.IsActivePlayerTwo) { SetQianGuanTwRot(PlayerEnum.PlayerTwo, false); return; } if (!IsActiveFireBtTwo) { SetQianGuanTwRot(PlayerEnum.PlayerTwo, false); return; } SetQianGuanTwRot(PlayerEnum.PlayerTwo, true); // if (DaoJiShiCtrl.GetInstance().GetIsPlayDaoJishi()) { // return; // } if (!XkGameCtrl.IsTiaoGuoStartCartoon) { if (!ZhunXingCtrl.GetInstanceTwo().GetActiveZhunXing() || !ZhunXingTeXiaoCtrl.IsOverTeXiaoZhunXing) { return; } } if (Camera.main == null) { return; } // if (GameOverCtrl.IsShowGameOver || JiFenJieMianCtrl.GetInstance().GetIsShowFinishTask()) { // IsActiveFireBtTwo = false; // return; // } // if (PlayerStEnum == PlayerTypeEnum.FeiJi && XkGameCtrl.GameJiTaiSt != GameJiTaiType.FeiJiJiTai) { // IsActiveFireBtTwo = false; // return; // } // if (PlayerStEnum == PlayerTypeEnum.TanKe && XkGameCtrl.GameJiTaiSt != GameJiTaiType.TanKeJiTai) { // IsActiveFireBtTwo = false; // return; // } if (XkGameCtrl.GaoBaoDanNumPTwo <= 0 && Time.time < LastFireTimeTwo + 1f / Frequency) { return; } if (XkGameCtrl.GaoBaoDanNumPTwo > 0 && Time.time < LastFireTimeTwo + 1f / FrequencyGaoBao) { return; } LastFireTimeTwo = Time.time; Vector3 ammoSpawnPos = AmmoStartPosTwo[0].position; GameObject obj = null; CheckFireAudioPlayerTwo(); bool isSpawnGaoBaoDan = false; if (XkGameCtrl.GaoBaoDanNumPTwo <= 0) { if (AmmoParticle[0] != null) { obj = SpawnParticleCom.SpawnParticleObject(AmmoParticle[0], ammoSpawnPos, AmmoStartPosTwo[0].rotation); obj.transform.parent = AmmoStartPosTwo[0]; } obj = GetPlayerAmmo(PlayerAmmoType.PuTongAmmo, ammoSpawnPos, AmmoStartPosTwo[0].rotation); } else { isSpawnGaoBaoDan = true; if (GaoBaoAmmoParticle[0] != null) { obj = SpawnParticleCom.SpawnParticleObject(GaoBaoAmmoParticle[0], ammoSpawnPos, AmmoStartPosTwo[0].rotation); obj.transform.parent = AmmoStartPosTwo[0]; } XkGameCtrl.GetInstance().SubGaoBaoDanNumPTwo(); obj = GetPlayerAmmo(PlayerAmmoType.GaoBaoAmmo, ammoSpawnPos, AmmoStartPosTwo[0].rotation); } obj.transform.parent = XkGameCtrl.PlayerAmmoArray; PlayerAmmoCtrl ammoScript = obj.GetComponent <PlayerAmmoCtrl>(); ammoScript.SetIsDonotHurtNpc(false); Vector3 mousePosInput = pcvr.GetPlayerMousePos(PlayerEnum.PlayerTwo); Vector3 firePos = Vector3.zero; Vector3 mousePos = mousePosInput + Vector3.forward * OffsetForward; Vector3 posTmp = Camera.main.ScreenToWorldPoint(mousePos); Vector3 ammoForward = Vector3.Normalize(posTmp - ammoSpawnPos); Ray ray = Camera.main.ScreenPointToRay(mousePosInput); RaycastHit hit; if (!IsPSAutoFire) { //firePos = FirePosValTmp * ammoForward + ammoSpawnPos; if (Physics.Raycast(ray, out hit, FireRayDirLen, FireLayer.value)) { //Debug.Log("Player fire obj -> "+hit.collider.name); //firePos = hit.point; if (ammoScript.AmmoType == PlayerAmmoType.PuTongAmmo) { XKNpcHealthCtrl healthScript = hit.collider.GetComponent <XKNpcHealthCtrl>(); if (healthScript != null && !healthScript.GetIsDeathNpc()) { healthScript.OnDamageNpc(ammoScript.AmmoType, PlayerEnum.PlayerTwo); } } BuJiBaoCtrl buJiBaoScript = hit.collider.GetComponent <BuJiBaoCtrl>(); if (buJiBaoScript != null) { buJiBaoScript.RemoveBuJiBao(PlayerEnum.PlayerTwo); //buJiBaoScript } } firePos = GunLaser[1].PlayerCursorTr.position; } else { ammoForward = obj.transform.forward; firePos = FirePosValTmp * ammoForward + ammoSpawnPos; if (Physics.Raycast(ammoSpawnPos, ammoForward, out hit, FireRayDirLen, FireLayer.value)) { //Debug.Log("Player fire obj -> "+hit.collider.name); firePos = hit.point; if (ammoScript.AmmoType == PlayerAmmoType.PuTongAmmo) { XKNpcHealthCtrl healthScript = hit.collider.GetComponent <XKNpcHealthCtrl>(); if (healthScript != null && !healthScript.GetIsDeathNpc()) { healthScript.OnDamageNpc(ammoScript.AmmoType, PlayerEnum.PlayerTwo); } } BuJiBaoCtrl buJiBaoScript = hit.collider.GetComponent <BuJiBaoCtrl>(); if (buJiBaoScript != null) { buJiBaoScript.RemoveBuJiBao(PlayerEnum.PlayerTwo); //buJiBaoScript } } } if (hit.collider == null) { ammoScript.StartMoveAmmo(firePos, PlayerEnum.PlayerTwo); } else { ammoScript.StartMoveAmmo(firePos, PlayerEnum.PlayerTwo, null, hit.collider.gameObject); } if (isSpawnGaoBaoDan) { //Call OtherPort Show AmmoParticle PlayerScript.CallOtherPortSpawnPlayerAmmoParticle(2, 2, firePos); } else { //Call OtherPort Show AmmoParticle PlayerScript.CallOtherPortSpawnPlayerAmmoParticle(2, 0, firePos); } }
public void SpawnAllDaoJu(PlayerEnum playerIndex) { float timeLengQue = 60f; if (XkGameCtrl.GetInstance() != null) { timeLengQue = XkGameCtrl.GetInstance().m_NpcDiaoDaoJuTimeLengQue; } if (Time.time - m_TimeLastCreatDaoJu < timeLengQue) { //间隔时间小于x秒则不产生补给包. return; } m_TimeLastCreatDaoJu = Time.time; if (!IsSpawnDJ) { return; } bool isCreateBigXueBao = CreateBigXueBaoDaoJu(playerIndex); if (isCreateBigXueBao == true) { //如果产生了大血包道具就不再产生其它道具. return; } PointList = new List <Transform>(); CheckDaoJuSpawnPointList(); int randVal = 0; int max = DaoJuArray.Length; Transform trEndPoint = null; for (int i = 0; i < max; i++) { randVal = Random.Range(0, 10000) % 100; if (DaoJuGaiLv.Length > i && randVal >= DaoJuGaiLv[i]) { continue; } if (DaoJuArray[i] == null) { continue; } trEndPoint = null; BuJiBaoCtrl buJiBaoCom = DaoJuArray[i].GetComponent <BuJiBaoCtrl>(); if (buJiBaoCom != null && buJiBaoCom.BuJiBao == BuJiBaoType.BigYiLiaoBaoDJ || buJiBaoCom.BuJiBao == BuJiBaoType.YiLiaoBaoDJ) { //医疗包道具. if (XKPlayerMoveCtrl.GetInstance(playerIndex) != null) { trEndPoint = XKPlayerMoveCtrl.GetInstance(playerIndex).transform; } } if (trEndPoint == null) { trEndPoint = GetDaoJuSpawnPoint(i); } if (trEndPoint == null) { continue; } GameObject daoJuObj = (GameObject)Instantiate(DaoJuArray[i], transform.position, transform.rotation); BuJiBaoCtrl buJiScript = daoJuObj.GetComponent <BuJiBaoCtrl>(); buJiScript.SetIsSpawnDaoJu(playerIndex); buJiScript.MoveDaoJuToPoint(trEndPoint); } }