/// <summary> /// Checks the is spawn player ammo. /// paoKou == 0 -> 主角机枪炮口. /// paoKou == 1 -> 主角主炮炮口. /// </summary> bool CheckIsSpawnPlayerAmmo(int paoKou) { bool isSpawnAmmo = true; PlayerAmmoType ammoType = PlayerAmmoType.Null; float lastFireTime = 0f; float frequencyVal = 1f; switch (paoKou) { case JI_QIANG_INDEX: ammoType = AmmoStateJiQiang; lastFireTime = LastFireTimeJiQiang; break; case ZHU_PAO_INDEX: ammoType = AmmoStateZhuPao; lastFireTime = LastFireTimeZhuPao; break; } switch (ammoType) { case PlayerAmmoType.PuTongAmmo: frequencyVal = Frequency[paoKou]; break; default: frequencyVal = Frequency[paoKou]; break; } if (Time.time < lastFireTime + (1f / frequencyVal)) { isSpawnAmmo = false; } return isSpawnAmmo; }
void ChangePlayerPaoTaObj(PlayerAmmoType ammoType) { int indexJH = 0; switch (ammoType) { case PlayerAmmoType.ChuanTouAmmo: indexJH = 1; break; case PlayerAmmoType.SanDanAmmo: indexJH = 2; break; case PlayerAmmoType.PaiJiPaoAmmo: indexJH = 3; break; } // #if UNITY_EDITOR // Debug.Log("Unity:"+"ChangePlayerPaoTaObj -> indexJH "+indexJH); // #endif for (int i = 0; i < 4; i++) { if (PaoTaRealObj.Length >= 4 && PaoTaRealObj[i] != null) { PaoTaRealObj[i].SetActive(indexJH == i); } } }
void CheckAutoFirePlayerAmmoType() { if (PSPlayerAutoFire == null) { return; } PlayerAmmoType autoFirePlayerAmmoType = PSPlayerAutoFire.AutoFirePlayerAmmoType; int maxAmmoNum = 999999; switch (autoFirePlayerAmmoType) { case PlayerAmmoType.DaoDanAmmo: XkGameCtrl.DaoDanNumPOne = maxAmmoNum; XkGameCtrl.DaoDanNumPTwo = maxAmmoNum; break; case PlayerAmmoType.GaoBaoAmmo: XkGameCtrl.GaoBaoDanNumPOne = maxAmmoNum; XkGameCtrl.GaoBaoDanNumPTwo = maxAmmoNum; break; case PlayerAmmoType.PuTongAmmo: XkGameCtrl.GaoBaoDanNumPOne = 0; XkGameCtrl.GaoBaoDanNumPTwo = 0; break; } AutoFirePlayerAmmoTypeVal = autoFirePlayerAmmoType; }
void CheckPSTriggerAutoFire() { if (!XkGameCtrl.GetInstance().IsCartoonShootTest) { return; } PlayerAmmoType ammoType = PSTriggerCamera.AutoFirePlayerAmmoTypeVal; if (PSAmmoTypeVal == ammoType) { switch (PSAmmoTypeVal) { case PlayerAmmoType.PuTongAmmo: case PlayerAmmoType.GaoBaoAmmo: if (!IsActiveFireBtJQ) { SetIsActiveFireBtJQ(true); } if (!IsActiveFireBtZP) { IsActiveFireBtZP = true; } if (PSAmmoTypeVal == PlayerAmmoType.GaoBaoAmmo) { XkGameCtrl.GaoBaoDanNumPOne = 9999; XkGameCtrl.GaoBaoDanNumPTwo = 9999; } else { XkGameCtrl.GaoBaoDanNumPOne = 0; XkGameCtrl.GaoBaoDanNumPTwo = 0; } break; case PlayerAmmoType.DaoDanAmmo: // ClickDaoDanBtOneEvent(pcvr.ButtonState.DOWN); // ClickDaoDanBtTwoEvent(pcvr.ButtonState.DOWN); break; default: if (IsActiveFireBtJQ) { SetIsActiveFireBtJQ(false); } if (IsActiveFireBtZP) { IsActiveFireBtZP = false; } break; } return; } PSAmmoTypeVal = ammoType; switch (PSAmmoTypeVal) { case PlayerAmmoType.DaoDanAmmo: case PlayerAmmoType.GaoBaoAmmo: case PlayerAmmoType.PuTongAmmo: IsPSAutoFire = true; break; default: IsPSAutoFire = false; break; } }
/*void HiddenHuoLiJQSprite() * { * //Debug.Log("HiddenHuoLiJQSprite..."); * if (!HuoLiJQSprite.gameObject.activeSelf) { * return; * } * HuoLiJQSprite.gameObject.SetActive(false); * }*/ /*IEnumerator ChangeHuoLiJQSpriteAmount() * { * bool isStopChange = false; * do { * HuoLiJQSprite.fillAmount += 0.2f; * if (HuoLiJQSprite.fillAmount >= 1f) { * HuoLiJQSprite.fillAmount = 1f; * isStopChange = true; * Invoke("HiddenHuoLiJQSprite", 3f); * yield break; * } * else { * yield return new WaitForSeconds(0.05f); * } * } while (!isStopChange); * }*/ // public void ShowDaoDanSprite() // { // if (Network.peerType == NetworkPeerType.Server) { // return; // } // // if (!gameObject.activeSelf) { // return; // } // //// if (DaoDanSprite.gameObject.activeSelf) { //// return; //// } // // GameJiTaiType jiTaiType = XkGameCtrl.GameJiTaiSt; // switch (PlayerSt) { // case PlayerEnum.PlayerOne: // if (jiTaiType == GameJiTaiType.FeiJiJiTai) { // DaoDanSprite.spriteName = "1PDaoDan"; // } // else if (jiTaiType == GameJiTaiType.TanKeJiTai) { // DaoDanSprite.spriteName = "1PPaoDan"; // } // break; // // case PlayerEnum.PlayerTwo: // if (jiTaiType == GameJiTaiType.FeiJiJiTai) { // DaoDanSprite.spriteName = "2PDaoDan"; // } // else if (jiTaiType == GameJiTaiType.TanKeJiTai) { // DaoDanSprite.spriteName = "2PPaoDan"; // } // break; // } // DaoDanSprite.fillAmount = 0f; // DaoDanSprite.gameObject.SetActive(true); // StartCoroutine(ChangeDaoDanSpriteAmount()); // } /*void HiddenDaoDanSprite() * { * //Debug.Log("HiddenDaoDanSprite..."); * if (!DaoDanSprite.gameObject.activeSelf) { * return; * } * DaoDanSprite.gameObject.SetActive(false); * }*/ /*IEnumerator ChangeDaoDanSpriteAmount() * { * bool isStopChange = false; * do { * DaoDanSprite.fillAmount += 0.2f; * if (DaoDanSprite.fillAmount >= 1f) { * DaoDanSprite.fillAmount = 1f; * isStopChange = true; * Invoke("HiddenDaoDanSprite", 3f); * yield break; * } * else { * yield return new WaitForSeconds(0.05f); * } * } while (!isStopChange); * }*/ void ResetPlayerAmmoNum(PlayerAmmoType ammoType) { switch (ammoType) { case PlayerAmmoType.ChuanTouAmmo: GaoBaoAmmoNum = -1; SanDanAmmoNum = -1; //DaoDanAmmoNum = -1; //ChuanTouAmmoNum = -1; GenZongAmmoNum = -1; JianSuAmmoNum = -1; break; case PlayerAmmoType.DaoDanAmmo: GaoBaoAmmoNum = -1; SanDanAmmoNum = -1; //DaoDanAmmoNum = -1; ChuanTouAmmoNum = -1; GenZongAmmoNum = -1; JianSuAmmoNum = -1; break; case PlayerAmmoType.GaoBaoAmmo: //GaoBaoAmmoNum = -1; SanDanAmmoNum = -1; //DaoDanAmmoNum = -1; ChuanTouAmmoNum = -1; GenZongAmmoNum = -1; JianSuAmmoNum = -1; break; case PlayerAmmoType.GenZongAmmo: GaoBaoAmmoNum = -1; SanDanAmmoNum = -1; //DaoDanAmmoNum = -1; ChuanTouAmmoNum = -1; //GenZongAmmoNum = -1; JianSuAmmoNum = -1; break; case PlayerAmmoType.JianSuAmmo: GaoBaoAmmoNum = -1; SanDanAmmoNum = -1; //DaoDanAmmoNum = -1; ChuanTouAmmoNum = -1; GenZongAmmoNum = -1; //JianSuAmmoNum = -1; break; case PlayerAmmoType.SanDanAmmo: GaoBaoAmmoNum = -1; //SanDanAmmoNum = -1; //DaoDanAmmoNum = -1; ChuanTouAmmoNum = -1; GenZongAmmoNum = -1; JianSuAmmoNum = -1; break; } }
void SetNpcAmmoCount(int ammoCount, PlayerAmmoType ammoType = PlayerAmmoType.PuTongAmmo) { float perVal = 0f; int puTongAmmoNum = MaxPuTongAmmo; //单机单人. if (XkGameCtrl.GameModeVal == GameMode.LianJi && XkPlayerCtrl.PlayerTranFeiJi != null && XkPlayerCtrl.PlayerTranTanKe != null) { if (XkGameCtrl.IsActivePlayerOne && XkGameCtrl.IsActivePlayerTwo) { if (NpcJiFen != NpcJiFenEnum.ShiBing) { puTongAmmoNum = LJMaxPuTongAmmoSR; //联机双人. } } else { if (NpcJiFen != NpcJiFenEnum.ShiBing) { puTongAmmoNum = LJMaxPuTongAmmoSR; //联机单人. } } } else { if (XkGameCtrl.IsActivePlayerOne && XkGameCtrl.IsActivePlayerTwo) { if (NpcJiFen != NpcJiFenEnum.ShiBing) { puTongAmmoNum = MaxPuTongAmmoSR; //单机双人. } } } switch (ammoType) { case PlayerAmmoType.PuTongAmmo: perVal = (float)ammoCount / puTongAmmoNum; GaoBaoAmmoCount = (int)(perVal * MaxGaoBaoAmmo); DaoDanAmmoCount = (int)(perVal * MaxDaoDanAmmo); break; case PlayerAmmoType.GaoBaoAmmo: perVal = (float)ammoCount / MaxGaoBaoAmmo; PuTongAmmoCount = (int)(perVal * puTongAmmoNum); DaoDanAmmoCount = (int)(perVal * MaxDaoDanAmmo); break; case PlayerAmmoType.DaoDanAmmo: perVal = (float)ammoCount / MaxDaoDanAmmo; PuTongAmmoCount = (int)(perVal * puTongAmmoNum); GaoBaoAmmoCount = (int)(perVal * MaxGaoBaoAmmo); break; } }
// Use this for initialization void Start() { TanKeTran = transform; AmmoParticle = XKPlayerGlobalDt.GetInstance().AmmoParticle; SanDanAmmoParticle = XKPlayerGlobalDt.GetInstance().SanDanAmmoParticle; PaiJiPaoAmmoParticle = XKPlayerGlobalDt.GetInstance().PaiJiPaoAmmoParticle; ChuanTouDanAmmoParticle = XKPlayerGlobalDt.GetInstance().ChuanTouDanAmmoParticle; DaoDanAmmoParticle = XKPlayerGlobalDt.GetInstance().DaoDanAmmoParticle; PuTongAmmo = XKPlayerGlobalDt.GetInstance().PuTongJQAmmo; DaoDanZPAmmo = XKPlayerGlobalDt.GetInstance().DaoDanZPAmmo; ChuanTouDanAmmo = XKDaoJuGlobalDt.GetInstance().AmmoChuanJiaDanZP; AmmoSanDanZP = XKDaoJuGlobalDt.GetInstance().AmmoSanDanZP; PaiJiPaoAmmo = XKDaoJuGlobalDt.GetInstance().AmmoPaiJiPao; ChangChengAmmo = XKDaoJuGlobalDt.GetInstance().AmmoChangCheng; QiangJiAmmo = XKDaoJuGlobalDt.GetInstance().AmmoQiangJi; AmmoHuoLiOpenJQ = XKDaoJuGlobalDt.GetInstance().AmmoHuoLiOpenJQ; AmmoHuoLiOpenZP = XKDaoJuGlobalDt.GetInstance().AmmoHuoLiOpenZP; Frequency = XKPlayerGlobalDt.GetInstance().Frequency; //AmmoParticleList = new List<AmmoParticleDt>(6); FireLayer = XkGameCtrl.GetInstance().PlayerAmmoHitLayer; AmmoStateJiQiang = PlayerAmmoType.PuTongAmmo; AmmoStateZhuPao = PlayerAmmoType.DaoDanAmmo; int fireAudioLen = PlayerFireAudio.Length; for (int i = 0; i < fireAudioLen; i++) { if (PlayerFireAudio[i] == null) { continue; } PlayerFireAudio[i].loop = false; PlayerFireAudio[i].Stop(); } InitPlayerAmmoList(); switch (PlayerIndex) { case PlayerEnum.PlayerOne: InputEventCtrl.GetInstance().ClickFireBtOneEvent += ClickFireBtEvent; InputEventCtrl.GetInstance().ClickDaoDanBtOneEvent += ClickFireDaoDanBtEvent; break; case PlayerEnum.PlayerTwo: InputEventCtrl.GetInstance().ClickFireBtTwoEvent += ClickFireBtEvent; InputEventCtrl.GetInstance().ClickDaoDanBtTwoEvent += ClickFireDaoDanBtEvent; break; case PlayerEnum.PlayerThree: InputEventCtrl.GetInstance().ClickFireBtThreeEvent += ClickFireBtEvent; InputEventCtrl.GetInstance().ClickDaoDanBtThreeEvent += ClickFireDaoDanBtEvent; break; case PlayerEnum.PlayerFour: InputEventCtrl.GetInstance().ClickFireBtFourEvent += ClickFireBtEvent; InputEventCtrl.GetInstance().ClickDaoDanBtFourEvent += ClickFireDaoDanBtEvent; break; } CreatPlayerXiaoFeiJi(); }
// Use this for initialization void Start() { SpawnParticleCom = gameObject.AddComponent <XKSpawnParticle>(); for (int i = 0; i < QianGuanTwRot.Length; i++) { QianGuanTwRot[i].enabled = false; } FireLayer = XkGameCtrl.GetInstance().PlayerAmmoHitLayer; PlayerScript = GetComponent <XkPlayerCtrl>(); PlayerScript.SetPlayerAutoFireScript(this); PlayerStEnum = PlayerScript.PlayerSt; AmmoStatePOne = PlayerAmmoType.PuTongAmmo; AmmoStatePTwo = PlayerAmmoType.PuTongAmmo; if (PlayerStEnum != PlayerTypeEnum.CartoonCamera) { PlayerAudio = PlayerScript.PlayerAudio; for (int i = 0; i < 7; i++) { if (i < 6) { PlayerAudio[i].loop = false; } else { PlayerAudio[i].loop = true; } PlayerAudio[i].Stop(); } InitPlayerAmmoList(); //InputEventCtrl.GetInstance().ClickFireBtOneEvent += ClickFireBtOneEvent; InputEventCtrl.GetInstance().ClickFireBtTwoEvent += ClickFireBtTwoEvent; //InputEventCtrl.GetInstance().ClickDaoDanBtOneEvent += ClickDaoDanBtOneEvent; InputEventCtrl.GetInstance().ClickDaoDanBtTwoEvent += ClickDaoDanBtTwoEvent; // if (Network.peerType == NetworkPeerType.Server) { // InitPlayerAmmoList(); // } // // if ((PlayerStEnum == PlayerTypeEnum.FeiJi && XkGameCtrl.GameJiTaiSt == GameJiTaiType.FeiJiJiTai) // || (PlayerStEnum == PlayerTypeEnum.TanKe && XkGameCtrl.GameJiTaiSt == GameJiTaiType.TanKeJiTai)){ // InitPlayerAmmoList(); // InputEventCtrl.GetInstance().ClickFireBtOneEvent += ClickFireBtOneEvent; // InputEventCtrl.GetInstance().ClickFireBtTwoEvent += ClickFireBtTwoEvent; // InputEventCtrl.GetInstance().ClickDaoDanBtOneEvent += ClickDaoDanBtOneEvent; // InputEventCtrl.GetInstance().ClickDaoDanBtTwoEvent += ClickDaoDanBtTwoEvent; // } } else { this.enabled = false; } }
void HandleAmmoList(PlayerAmmoCtrl scriptAmmo) { PlayerAmmoType ammoType = scriptAmmo.AmmoType; switch (ammoType) { case PlayerAmmoType.PuTongAmmo: if (PlayerStEnum == PlayerTypeEnum.FeiJi) { if (AmmoList.Contains(scriptAmmo)) { return; } AmmoList.Add(scriptAmmo); } else if (PlayerStEnum == PlayerTypeEnum.TanKe) { if (AmmoList_TK.Contains(scriptAmmo)) { return; } AmmoList_TK.Add(scriptAmmo); } break; case PlayerAmmoType.GaoBaoAmmo: if (PlayerStEnum == PlayerTypeEnum.FeiJi) { if (AmmoGaoBaoList.Contains(scriptAmmo)) { return; } AmmoGaoBaoList.Add(scriptAmmo); } else if (PlayerStEnum == PlayerTypeEnum.TanKe) { if (AmmoGaoBaoList_TK.Contains(scriptAmmo)) { return; } AmmoGaoBaoList_TK.Add(scriptAmmo); } break; } }
public void SetIsSanDanZPFire(bool isFire) { if (IsSanDanZPFire == isFire) { return; } IsSanDanZPFire = isFire; ChangePlayerPaoTaObj(isFire == true ? PlayerAmmoType.SanDanAmmo : PlayerAmmoType.Null); PlayerAmmoType ammoTypeVal = isFire == true ? PlayerAmmoType.SanDanAmmo : PlayerAmmoType.DaoDanAmmo; XKPlayerAutoFire.GetInstanceAutoFire(PlayerIndex).SetAmmoStateZhuPao(ammoTypeVal); //Debug.Log("Unity:"+"SetIsSanDanZPFire -> isFire "+isFire); BuJiBaoType daoJuTypeVal = isFire == true ? BuJiBaoType.ZhuPaoSanDanDJ : BuJiBaoType.DaoDan; ZhuPaoAmmoSt = daoJuTypeVal; if (isFire) { //IsSanDanZPFire = false; IsPaiJiPaoFire = false; } }
public void SetAmmoStateZhuPao(PlayerAmmoType ammoType) { AmmoStateZhuPao = ammoType; if (ammoType == PlayerAmmoType.ChuanTouAmmo) { IsSanDanZPFire = false; IsPaiJiPaoFire = false; ChangePlayerPaoTaObj(ammoType); } else if (ammoType == PlayerAmmoType.SanDanAmmo) { IsPaiJiPaoFire = false; ChangePlayerPaoTaObj(ammoType); } else if (ammoType == PlayerAmmoType.PaiJiPaoAmmo) { IsPaiJiPaoFire = false; ChangePlayerPaoTaObj(ammoType); } else { ChangePlayerPaoTaObj(PlayerAmmoType.Null); } }
public void ShowHuoLiJQSprite(PlayerAmmoType ammoType) { if (Network.peerType == NetworkPeerType.Server) { return; } ResetPlayerAmmoNum(ammoType); switch (ammoType) { case PlayerAmmoType.ChuanTouAmmo: CheckPlayerChuanTouDanAmmoNum(); break; case PlayerAmmoType.DaoDanAmmo: break; case PlayerAmmoType.GaoBaoAmmo: CheckPlayerGaoBaoAmmoNum(); break; case PlayerAmmoType.GenZongAmmo: CheckPlayerGenZongDanAmmoNum(); break; case PlayerAmmoType.JianSuAmmo: CheckPlayerJianSuDanAmmoNum(); break; case PlayerAmmoType.SanDanAmmo: CheckPlayerSanDanAmmoNum(); break; } // if (HuoLiJQSprite.gameObject.activeSelf) { // return; // } // HuoLiJQSprite.fillAmount = 0f; // HuoLiJQSprite.gameObject.SetActive(true); // StartCoroutine(ChangeHuoLiJQSpriteAmount()); }
void OtherPortSpawnPlayerAmmo(PlayerAmmoType ammoType, Vector3 ammoSpawnPos, Quaternion ammoSpawnRot, Vector3 firePos) { //GameObject obj = SpawnPlayerAmmo(ammoPlayer, ammoSpawnPos, ammoSpawnRot); GameObject obj = null; switch (ammoType) { case PlayerAmmoType.PuTongAmmo: case PlayerAmmoType.GaoBaoAmmo: obj = GetPlayerAmmo(ammoType, ammoSpawnPos, ammoSpawnRot); break; default: obj = SpawnPlayerAmmo(DaoDanAmmo, ammoSpawnPos, ammoSpawnRot); break; } obj.transform.parent = XkGameCtrl.PlayerAmmoArray; PlayerAmmoCtrl ammoScript = obj.GetComponent <PlayerAmmoCtrl>(); ammoScript.SetIsDonotHurtNpc(true); ammoScript.StartMoveAmmo(firePos, PlayerEnum.Null); }
public void OnDamageNpc(int damageNpcVal = 1, PlayerEnum playerSt = PlayerEnum.Null, PlayerAmmoType pAmmoType = PlayerAmmoType.Null, bool isAiFireAmmo = false) { if (IsDeathNpc) { return; } if (pAmmoType == PlayerAmmoType.SanDanAmmo) { if (Time.time - TimeSanDanDamage < XKPlayerGlobalDt.GetInstance().TimeShouDongDaoDan) { //对于玩家的主炮散弹在同一次发射内只计算一次伤害. //SSDebug.LogWarning("************* pAmmoType ====== " + pAmmoType); return; } TimeSanDanDamage = Time.time; } if (pAmmoType == PlayerAmmoType.ChuanTouAmmo) { if (XKPlayerMvFanWei.GetInstanceQian() != null && XKPlayerCamera.GetInstanceFeiJi() != null) { Vector3 forwardVecCam = XKPlayerCamera.GetInstanceFeiJi().transform.forward; Vector3 posA = transform.position; Vector3 posB = XKPlayerMvFanWei.GetInstanceQian().transform.position; forwardVecCam.y = posA.y = posB.y = 0f; Vector3 vecBA = posA - posB; if (Vector3.Dot(forwardVecCam, vecBA) >= 0f) { //npc在镜头前方范围之外,不受玩家子弹伤害. return; } } } if (IsBackDaiJinQuanNpcBlood == true) { //代金券npc重置血值后,给一定时间的无敌状态. if (Time.time - m_TimeLastBackDaiJinQuanNpcBlood <= 0.5f) { return; } else { IsBackDaiJinQuanNpcBlood = false; } } //switch (NpcJiFen) //{ // case NpcJiFenEnum.Boss: // if (!XKBossXueTiaoCtrl.GetInstance().GetIsCanSubXueTiaoAmount()) // { // if (NpcDamageCom != null) // { // NpcDamageCom.PlayNpcDamageEvent(); // } // return; // } // break; //} if (NpcDamageCom != null) { NpcDamageCom.PlayNpcDamageEvent(); } if (NpcScript != null) { if (NpcScript.IsCaiPiaoZhanChe == true && NpcScript.IsEnterCameraBox == false) { //彩票战车和boss没有进入摄像机盒子,不计算伤害. return; } } if (CountActivePlayer != XkGameCtrl.PlayerActiveNum) { if (CountActivePlayer != 0) { //fix PuTongAmmoCount. int indexValTmp = CountActivePlayer - 1; int puTongAmmoNumTmp = MaxPuTongAmmo[indexValTmp]; indexValTmp = XkGameCtrl.PlayerActiveNum - 1; if (indexValTmp >= 0) { float healthPer = (float)PuTongAmmoCount / puTongAmmoNumTmp; //int oldPuTongAmmoCount = PuTongAmmoCount; PuTongAmmoCount = (int)(healthPer * MaxPuTongAmmo[indexValTmp]); /*Debug.Log("Unity:"+"fix npc health -> PuTongAmmoCount "+PuTongAmmoCount +", oldPuTongAmmoCount "+oldPuTongAmmoCount);*/ } } CountActivePlayer = XkGameCtrl.PlayerActiveNum; } if (NpcScript == null || (NpcScript != null && !NpcScript.GetIsWuDi())) { PuTongAmmoCount += damageNpcVal; } int indexVal = XkGameCtrl.PlayerActiveNum - 1; indexVal = indexVal < 0 ? 0 : indexVal; int puTongAmmoNum = MaxPuTongAmmo[indexVal]; if (NpcScript != null) { if (NpcScript.IsZhanCheNpc || NpcScript.IsJPBossNpc) { if (XkGameCtrl.GetInstance().m_GamePlayerAiData.IsActiveAiPlayer == true) { //当没有玩家激活游戏时,彩票战车和JPBoss采用原血量的一定比例来计算. puTongAmmoNum = (int)(XkGameCtrl.GetInstance().m_ZhanCheBossBloodPer *puTongAmmoNum); } } } /*if (NpcJiFen == NpcJiFenEnum.Boss) * { * float bossAmount = (float)(puTongAmmoNum - PuTongAmmoCount) / puTongAmmoNum; * bossAmount = bossAmount < 0f ? 0f : bossAmount; * if (XKBossXueTiaoCtrl.GetInstance() != null) * { * XKBossXueTiaoCtrl.GetInstance().SetBloodBossAmount(bossAmount, this); * } * }*/ if (NpcScript != null) { if (NpcScript.IsCaiPiaoZhanChe == true) { if (XkGameCtrl.GetInstance() != null && XKPlayerFenShuCtrl.GetInstance() != null) { if (pAmmoType == PlayerAmmoType.DaoDanAmmo || pAmmoType == PlayerAmmoType.PaiJiPaoAmmo || pAmmoType == PlayerAmmoType.ChuanTouAmmo || pAmmoType == PlayerAmmoType.SanDanAmmo || pAmmoType == PlayerAmmoType.ChongJiBoAmmo) { int jiFenVal = XkGameCtrl.GetInstance().m_DaoDanHitBossJiFen; //XKPlayerFenShuCtrl.GetInstance().ShowPlayerFenShu(playerSt, GetJiFen(jiFenVal)); XKPlayerFenShuCtrl.GetInstance().ShowPlayerFenShu(playerSt, jiFenVal); } } float bloodAmount = (float)(puTongAmmoNum - PuTongAmmoCount) / puTongAmmoNum; bloodAmount = bloodAmount < 0f ? 0f : bloodAmount; bool isCanJiBao = true; if (XkGameCtrl.GetInstance().m_GamePlayerAiData.IsActiveAiPlayer == true) { //没有玩家激活游戏时,Ai都认为是可以击爆战车或Boss. } else { //有玩家激活游戏. if (XkGameCtrl.GetInstance().m_CaiPiaoHealthDt != null) { isCanJiBao = XkGameCtrl.GetInstance().m_CaiPiaoHealthDt.m_CurrentTotalHealthDt.IsCanJiBao; } } if (isCanJiBao == false) { //不允许被玩家击爆的代金券npc. if (IsBloodToStage02 == false) { if (bloodAmount <= 0.24f) { //强制保留一定的血量. m_BloodAmoutValue = bloodAmount = 0.24f; IsBloodToStage02 = true; m_TimeLastBloodToStage = Time.time; PuTongAmmoCount = puTongAmmoNum - 1; } } else if (IsBloodToStage01 == false) { float minBloodAmount = 0.12f; //最小极限血值. if (m_BloodAmoutValue > minBloodAmount) { //血值已经降到最低阶段. float dTimeVal = 0.4f; if (XkGameCtrl.GetInstance().m_CaiPiaoHealthDt != null) { dTimeVal = XkGameCtrl.GetInstance().m_CaiPiaoHealthDt.m_TimeNoDead; } if (Time.time - m_TimeLastBloodToStage >= dTimeVal) { //每次间隔一定时间减少一定血值. m_TimeLastBloodToStage = Time.time; float subBloodAmount = 0.02f; //每次减少的血值. if (m_BloodAmoutValue > minBloodAmount) { m_BloodAmoutValue -= subBloodAmount; if (m_BloodAmoutValue < minBloodAmount) { //强制保护的血值信息. m_BloodAmoutValue = minBloodAmount; IsBloodToStage01 = true; } } } } bloodAmount = m_BloodAmoutValue; PuTongAmmoCount = puTongAmmoNum - 1; //强制保留一定的血值. } else { float minBloodAmount = 0.03f; //最小极限血值. if (m_BloodAmoutValue > minBloodAmount) { //血值已经降到最低阶段. float dTimeVal = 0.4f; if (XkGameCtrl.GetInstance().m_CaiPiaoHealthDt != null) { dTimeVal = XkGameCtrl.GetInstance().m_CaiPiaoHealthDt.m_TimeNoDead; } if (Time.time - m_TimeLastBloodToStage >= dTimeVal) { //每次间隔一定时间减少一定血值. m_TimeLastBloodToStage = Time.time; float subBloodAmount = 0.01f; //每次减少的血值. if (m_BloodAmoutValue > minBloodAmount) { m_BloodAmoutValue -= subBloodAmount; if (m_BloodAmoutValue < minBloodAmount) { //强制保护的血值信息. m_BloodAmoutValue = minBloodAmount; } } } } bloodAmount = m_BloodAmoutValue; PuTongAmmoCount = puTongAmmoNum - 1; //强制保留一定的血值. } } //彩票战车和boss的血条UI信息更新. SSUIRoot.GetInstance().m_GameUIManage.SetDaiJinQuanNpcXueTiaoAmount(bloodAmount); if (XkGameCtrl.GetInstance().m_GamePlayerAiData.IsActiveAiPlayer == true) { //没有玩家激活游戏时,Ai都认为是不可以击爆JPBoss特殊武器的. } else { //JPBoss受到玩家子弹伤害. if (NpcScript.IsJPBossNpc == true) { NpcScript.OnDamageJPBossWeapon(bloodAmount); } } } } /*Debug.Log("Unity:"+"OnDamageNpc -> " +", nameNpc "+NpcNameInfo +", puTongAmmoNum "+puTongAmmoNum);*/ if (PuTongAmmoCount >= puTongAmmoNum) { if (NpcScript != null) { if (NpcScript.IsZhanCheNpc) { //战车npc是否可以被击爆的判断. if (XkGameCtrl.GetInstance().IsCaiPiaoHuLuePlayerIndex == false && NpcScript.m_IndexPlayerJiBao != playerSt) { //不是可以击爆战车npc的玩家. return; } if (XkGameCtrl.GetInstance().m_GamePlayerAiData.IsActiveAiPlayer == true) { //没有激活任何玩家. } else { if (!XkPlayerCtrl.GetInstanceFeiJi().m_SpawnNpcManage.m_CaiPiaoDataManage.m_GameCaiPiaoData.GetIsChuCaiPiaoByDeCaiState(SSCaiPiaoDataManage.GameCaiPiaoData.DeCaiState.ZhanChe, NpcScript.m_DaiJinQuanState)) { //战车彩池的彩票积累的不够. return; } } } if (NpcScript.IsJPBossNpc) { //JPBoss是否可以被击爆的判断. if (XkGameCtrl.GetInstance().IsCaiPiaoHuLuePlayerIndex == false && NpcScript.m_IndexPlayerJiBao != playerSt) { //不是可以击爆JPBoss的玩家. return; } if (XkGameCtrl.GetInstance().m_GamePlayerAiData.IsActiveAiPlayer == true) { //没有激活任何玩家. } else { if (!XkPlayerCtrl.GetInstanceFeiJi().m_SpawnNpcManage.m_CaiPiaoDataManage.m_GameCaiPiaoData.GetIsChuCaiPiaoByDeCaiState(SSCaiPiaoDataManage.GameCaiPiaoData.DeCaiState.JPBoss)) { //JPBoss彩池的彩票积累的不够. return; } } } } if (IsDeathNpc) { return; } IsDeathNpc = true; if (IsOpenCameraShake) { XKPlayerCamera.GetInstanceFeiJi().HandlePlayerCameraShake(); } if (NpcJiFen == NpcJiFenEnum.Boss && BossXieZiScript != null) { BossXieZiScript.ResetBossXieZiShouBiInfo(); } if (BoxColCom != null) { BoxColCom.enabled = false; } CheckSpawnDaoJuCom(playerSt); CheckNpcDeathExplode(playerSt); CheckHiddenNpcObjArray(); // bool isAddKillNpcNum = true; // if (NpcScript != null && CannonScript != null) { // if (NpcScript.GetIsDeathNPC()) { // isAddKillNpcNum = false; // Debug.Log("Unity:"+"name "+NpcScript.name+", isAddKillNpcNum "+isAddKillNpcNum); // } // } if (!IsYouTongNpc) { switch (NpcJiFen) { case NpcJiFenEnum.Boss: if (GameTimeBossCtrl.GetInstance() != null && GameTimeBossCtrl.GetInstance().GetTimeBossResidual() > 0) { XkGameCtrl.GetInstance().AddPlayerKillNpc(PlayerEnum.Null, NpcJiFen, GetJiFen()); } break; default: XkGameCtrl.GetInstance().AddPlayerKillNpc(playerSt, NpcJiFen, GetJiFen()); ShowPiaoFen(playerSt); break; } // if (isAddKillNpcNum) { // switch (NpcJiFen) { // case NpcJiFenEnum.Boss: // if (GameTimeBossCtrl.GetInstance().GetTimeBossResidual() > 0) { // XkGameCtrl.GetInstance().AddPlayerKillNpc(PlayerEnum.Null, NpcJiFen, JiFenVal); // } // break; // default: // XkGameCtrl.GetInstance().AddPlayerKillNpc(playerSt, NpcJiFen, JiFenVal); // break; // } // } } else { CheckYouTongDamageNpc(); } if (NpcScript != null) { if (CannonScript != null) { CannonScript.OnRemoveCannon(playerSt, 1); } if (NpcJiFen != NpcJiFenEnum.Boss && NpcScript.GetIsBossNpc()) { return; } NpcScript.TriggerRemovePointNpc(1, CannonScript, pAmmoType); if (NpcScript.IsCaiPiaoZhanChe) { SSCaiPiaoDataManage.GameCaiPiaoData.DeCaiState deCaiType = SSCaiPiaoDataManage.GameCaiPiaoData.DeCaiState.ZhanChe; //彩票boss或战车npc. if (NpcScript.GetIsBossNpc()) { deCaiType = SSCaiPiaoDataManage.GameCaiPiaoData.DeCaiState.JPBoss; } else { if (XkPlayerCtrl.GetInstanceFeiJi() != null) { XkPlayerCtrl.GetInstanceFeiJi().AddGetZhanCheDaiJinQuanPlayer(XKPlayerMoveCtrl.GetInstance(playerSt)); } } if (XkPlayerCtrl.GetInstanceFeiJi().m_SpawnNpcManage.m_CaiPiaoDataManage != null) { if (isAiFireAmmo == false) { //只有被玩家击爆的代金券npc才允许出彩. XkPlayerCtrl.GetInstanceFeiJi().m_SpawnNpcManage.m_CaiPiaoDataManage.m_GameCaiPiaoData.SubGameDeCaiValByDeCaiState(playerSt, deCaiType, SSCaiPiaoDataManage.SuiJiDaoJuState.BaoXiang, NpcScript.m_DaiJinQuanState); } //else //{ //被Ai坦克击爆的代金券npc不允许出彩. //SSDebug.Log("The DaiJinQuan was killed by AiTank"); //} } } else { //普通npc被击杀. //if (XkGameCtrl.GetInstance().m_PlayerJiChuCaiPiaoData != null && DeathExplodePoint != null) //{ // //随机送出正常得彩. // XkGameCtrl.GetInstance().m_PlayerJiChuCaiPiaoData.CheckPlayerSongPiaoInfo(playerSt, DeathExplodePoint.position); //} } } else if (CannonScript != null) { CannonScript.OnRemoveCannon(playerSt, 1); //炮台类npc被击杀. //if (XkGameCtrl.GetInstance().m_PlayerJiChuCaiPiaoData != null && DeathExplodePoint != null) //{ // //随机送出正常得彩. // XkGameCtrl.GetInstance().m_PlayerJiChuCaiPiaoData.CheckPlayerSongPiaoInfo(playerSt, DeathExplodePoint.position); //} } } }
/** * ammoType == 0 -> 主角机枪. * ammoType == 1 -> 主炮炮管. */ GameObject SpawnPlayerAmmoByAmmoType(int ammoIndex, Vector3 ammoSpawnPos, Quaternion ammoSpawnRot) { GameObject obj = null; GameObject ammoParticle = null; PlayerAmmoType ammoType = PlayerAmmoType.PuTongAmmo; switch (ammoIndex) { case JI_QIANG_INDEX: ammoType = AmmoStateJiQiang; break; case ZHU_PAO_INDEX: ammoType = AmmoStateZhuPao; break; } if (ammoIndex == ZHU_PAO_INDEX) { switch (ammoType) { case PlayerAmmoType.ChuanTouAmmo: ZhuPaoAmmoSt = BuJiBaoType.ChuanTouDan; break; case PlayerAmmoType.DaoDanAmmo: ZhuPaoAmmoSt = BuJiBaoType.DaoDan; break; } } //Debug.Log("Unity:"+"ammoType "+ammoType+", PlayerIndex "+PlayerIndex+", SpawnPlayerAmmoByAmmoType"); switch (ammoType) { case PlayerAmmoType.PuTongAmmo: ammoParticle = AmmoParticle[ammoIndex]; break; /*case PlayerAmmoType.GaoBaoAmmo: ammoParticle = GaoBaoAmmoParticle[ammoIndex]; //XkGameCtrl.GetInstance().SubGaoBaoDanNum(PlayerIndex); break;*/ case PlayerAmmoType.SanDanAmmo: if (ammoIndex == 0) { return obj; } ammoParticle = SanDanAmmoParticle[ammoIndex]; //XkGameCtrl.GetInstance().SubSanDanNum(PlayerIndex); SpawnPlayerAllSanDanAmmo(ammoIndex); break; /*case PlayerAmmoType.GenZongAmmo: ammoParticle = GenZongDanAmmoParticle[ammoIndex]; //XkGameCtrl.GetInstance().SubGenZongDanNum(PlayerIndex); break;*/ case PlayerAmmoType.PaiJiPaoAmmo: ammoParticle = PaiJiPaoAmmoParticle[ammoIndex]; break; /*case PlayerAmmoType.JianSuAmmo: ammoParticle = JianSuDanAmmoParticle[ammoIndex]; //XkGameCtrl.GetInstance().SubJianSuDanNum(PlayerIndex); break;*/ case PlayerAmmoType.ChuanTouAmmo: ammoParticle = ChuanTouDanAmmoParticle[ammoIndex]; //XkGameCtrl.GetInstance().SubChuanTouDanNum(PlayerIndex); break; case PlayerAmmoType.DaoDanAmmo: ammoParticle = DaoDanAmmoParticle[ammoIndex]; break; } SpawnPlayerAmmoParticle(ammoParticle, ammoSpawnPos, ammoSpawnRot); obj = GetPlayerAmmo(ammoType, ammoSpawnPos, ammoSpawnRot, ammoIndex); return obj; }
public void OnDamageNpc(int damageNpcVal = 1, PlayerEnum playerSt = PlayerEnum.Null, PlayerAmmoType pAmmoType = PlayerAmmoType.Null) { if (IsDeathNpc) { return; } switch (NpcJiFen) { case NpcJiFenEnum.Boss: if (!XKBossXueTiaoCtrl.GetInstance().GetIsCanSubXueTiaoAmount()) { return; } break; } if (CountActivePlayer != XkGameCtrl.PlayerActiveNum) { if (CountActivePlayer != 0) { //fix PuTongAmmoCount. int indexValTmp = CountActivePlayer - 1; int puTongAmmoNumTmp = MaxPuTongAmmo[indexValTmp]; indexValTmp = XkGameCtrl.PlayerActiveNum - 1; if (indexValTmp >= 0) { float healthPer = (float)PuTongAmmoCount / puTongAmmoNumTmp; //int oldPuTongAmmoCount = PuTongAmmoCount; PuTongAmmoCount = (int)(healthPer * MaxPuTongAmmo[indexValTmp]); /*Debug.Log("Unity:"+"fix npc health -> PuTongAmmoCount "+PuTongAmmoCount +", oldPuTongAmmoCount "+oldPuTongAmmoCount);*/ } } CountActivePlayer = XkGameCtrl.PlayerActiveNum; } if (NpcDamageCom != null) { NpcDamageCom.PlayNpcDamageEvent(); } if (NpcScript == null || (NpcScript != null && !NpcScript.GetIsWuDi())) { PuTongAmmoCount += damageNpcVal; } int indexVal = XkGameCtrl.PlayerActiveNum - 1; indexVal = indexVal < 0 ? 0 : indexVal; int puTongAmmoNum = MaxPuTongAmmo[indexVal]; if (NpcJiFen == NpcJiFenEnum.Boss) { float bossAmount = (float)(puTongAmmoNum - PuTongAmmoCount) / puTongAmmoNum; bossAmount = bossAmount < 0f ? 0f : bossAmount; XKBossXueTiaoCtrl.GetInstance().SetBloodBossAmount(bossAmount, this); } /*Debug.Log("Unity:"+"OnDamageNpc -> " +", nameNpc "+NpcNameInfo +", puTongAmmoNum "+puTongAmmoNum);*/ if (PuTongAmmoCount >= puTongAmmoNum) { if (IsDeathNpc) { return; } IsDeathNpc = true; if (IsOpenCameraShake) { XKPlayerCamera.GetInstanceFeiJi().HandlePlayerCameraShake(); } if (NpcJiFen == NpcJiFenEnum.Boss && BossXieZiScript != null) { BossXieZiScript.ResetBossXieZiShouBiInfo(); } if (BoxColCom != null) { BoxColCom.enabled = false; } CheckSpawnDaoJuCom(); CheckNpcDeathExplode(); CheckHiddenNpcObjArray(); // bool isAddKillNpcNum = true; // if (NpcScript != null && CannonScript != null) { // if (NpcScript.GetIsDeathNPC()) { // isAddKillNpcNum = false; // Debug.Log("Unity:"+"name "+NpcScript.name+", isAddKillNpcNum "+isAddKillNpcNum); // } // } if (!IsYouTongNpc) { switch (NpcJiFen) { case NpcJiFenEnum.Boss: if (GameTimeBossCtrl.GetInstance().GetTimeBossResidual() > 0) { XkGameCtrl.GetInstance().AddPlayerKillNpc(PlayerEnum.Null, NpcJiFen, JiFenVal); } break; default: XkGameCtrl.GetInstance().AddPlayerKillNpc(playerSt, NpcJiFen, JiFenVal); break; } // if (isAddKillNpcNum) { // switch (NpcJiFen) { // case NpcJiFenEnum.Boss: // if (GameTimeBossCtrl.GetInstance().GetTimeBossResidual() > 0) { // XkGameCtrl.GetInstance().AddPlayerKillNpc(PlayerEnum.Null, NpcJiFen, JiFenVal); // } // break; // default: // XkGameCtrl.GetInstance().AddPlayerKillNpc(playerSt, NpcJiFen, JiFenVal); // break; // } // } } else { CheckYouTongDamageNpc(); } if (NpcScript != null) { if (CannonScript != null) { CannonScript.OnRemoveCannon(playerSt, 1); } if (NpcJiFen != NpcJiFenEnum.Boss && NpcScript.GetIsBossNpc()) { return; } NpcScript.TriggerRemovePointNpc(1, CannonScript, pAmmoType); } else if (CannonScript != null) { CannonScript.OnRemoveCannon(playerSt, 1); } } }
public void OnDamageNpc(int damageNpcVal = 1, PlayerEnum playerSt = PlayerEnum.Null, PlayerAmmoType pAmmoType = PlayerAmmoType.Null) { if (IsDeathNpc) { return; } //switch (NpcJiFen) //{ // case NpcJiFenEnum.Boss: // if (!XKBossXueTiaoCtrl.GetInstance().GetIsCanSubXueTiaoAmount()) // { // if (NpcDamageCom != null) // { // NpcDamageCom.PlayNpcDamageEvent(); // } // return; // } // break; //} if (NpcDamageCom != null) { NpcDamageCom.PlayNpcDamageEvent(); } if (NpcScript != null) { if (NpcScript.IsCaiPiaoZhanChe == true && NpcScript.IsEnterCameraBox == false) { //彩票战车和boss没有进入摄像机盒子,不计算伤害. return; } } if (CountActivePlayer != XkGameCtrl.PlayerActiveNum) { if (CountActivePlayer != 0) { //fix PuTongAmmoCount. int indexValTmp = CountActivePlayer - 1; int puTongAmmoNumTmp = MaxPuTongAmmo[indexValTmp]; indexValTmp = XkGameCtrl.PlayerActiveNum - 1; if (indexValTmp >= 0) { float healthPer = (float)PuTongAmmoCount / puTongAmmoNumTmp; //int oldPuTongAmmoCount = PuTongAmmoCount; PuTongAmmoCount = (int)(healthPer * MaxPuTongAmmo[indexValTmp]); /*Debug.Log("Unity:"+"fix npc health -> PuTongAmmoCount "+PuTongAmmoCount +", oldPuTongAmmoCount "+oldPuTongAmmoCount);*/ } } CountActivePlayer = XkGameCtrl.PlayerActiveNum; } if (NpcScript == null || (NpcScript != null && !NpcScript.GetIsWuDi())) { PuTongAmmoCount += damageNpcVal; } int indexVal = XkGameCtrl.PlayerActiveNum - 1; indexVal = indexVal < 0 ? 0 : indexVal; int puTongAmmoNum = MaxPuTongAmmo[indexVal]; if (NpcJiFen == NpcJiFenEnum.Boss) { float bossAmount = (float)(puTongAmmoNum - PuTongAmmoCount) / puTongAmmoNum; bossAmount = bossAmount < 0f ? 0f : bossAmount; XKBossXueTiaoCtrl.GetInstance().SetBloodBossAmount(bossAmount, this); } /*Debug.Log("Unity:"+"OnDamageNpc -> " +", nameNpc "+NpcNameInfo +", puTongAmmoNum "+puTongAmmoNum);*/ if (PuTongAmmoCount >= puTongAmmoNum) { if (NpcScript != null) { if (NpcScript.IsZhanCheNpc) { //战车npc是否可以被击爆的判断. if (XkGameCtrl.GetInstance().IsCaiPiaoHuLuePlayerIndex == false && NpcScript.m_IndexPlayerJiBao != playerSt) { //不是可以击爆战车npc的玩家. return; } if (XkGameCtrl.GetInstance().m_GamePlayerAiData.IsActiveAiPlayer == true) { //没有激活任何玩家. } else { if (!XkPlayerCtrl.GetInstanceFeiJi().m_SpawnNpcManage.m_CaiPiaoDataManage.m_GameCaiPiaoData.GetIsChuCaiPiaoByDeCaiState(SSCaiPiaoDataManage.GameCaiPiaoData.DeCaiState.ZhanChe)) { //战车彩池的彩票积累的不够. return; } } } if (NpcScript.IsJPBossNpc) { //JPBoss是否可以被击爆的判断. if (XkGameCtrl.GetInstance().IsCaiPiaoHuLuePlayerIndex == false && NpcScript.m_IndexPlayerJiBao != playerSt) { //不是可以击爆JPBoss的玩家. return; } if (XkGameCtrl.GetInstance().m_GamePlayerAiData.IsActiveAiPlayer == true) { //没有激活任何玩家. } else { if (!XkPlayerCtrl.GetInstanceFeiJi().m_SpawnNpcManage.m_CaiPiaoDataManage.m_GameCaiPiaoData.GetIsChuCaiPiaoByDeCaiState(SSCaiPiaoDataManage.GameCaiPiaoData.DeCaiState.JPBoss)) { //JPBoss彩池的彩票积累的不够. return; } } } } if (IsDeathNpc) { return; } IsDeathNpc = true; if (IsOpenCameraShake) { XKPlayerCamera.GetInstanceFeiJi().HandlePlayerCameraShake(); } if (NpcJiFen == NpcJiFenEnum.Boss && BossXieZiScript != null) { BossXieZiScript.ResetBossXieZiShouBiInfo(); } if (BoxColCom != null) { BoxColCom.enabled = false; } CheckSpawnDaoJuCom(playerSt); CheckNpcDeathExplode(playerSt); CheckHiddenNpcObjArray(); // bool isAddKillNpcNum = true; // if (NpcScript != null && CannonScript != null) { // if (NpcScript.GetIsDeathNPC()) { // isAddKillNpcNum = false; // Debug.Log("Unity:"+"name "+NpcScript.name+", isAddKillNpcNum "+isAddKillNpcNum); // } // } if (!IsYouTongNpc) { switch (NpcJiFen) { case NpcJiFenEnum.Boss: if (GameTimeBossCtrl.GetInstance().GetTimeBossResidual() > 0) { XkGameCtrl.GetInstance().AddPlayerKillNpc(PlayerEnum.Null, NpcJiFen, JiFenVal); } break; default: XkGameCtrl.GetInstance().AddPlayerKillNpc(playerSt, NpcJiFen, JiFenVal); ShowPiaoFen(playerSt); break; } // if (isAddKillNpcNum) { // switch (NpcJiFen) { // case NpcJiFenEnum.Boss: // if (GameTimeBossCtrl.GetInstance().GetTimeBossResidual() > 0) { // XkGameCtrl.GetInstance().AddPlayerKillNpc(PlayerEnum.Null, NpcJiFen, JiFenVal); // } // break; // default: // XkGameCtrl.GetInstance().AddPlayerKillNpc(playerSt, NpcJiFen, JiFenVal); // break; // } // } } else { CheckYouTongDamageNpc(); } if (NpcScript != null) { if (CannonScript != null) { CannonScript.OnRemoveCannon(playerSt, 1); } if (NpcJiFen != NpcJiFenEnum.Boss && NpcScript.GetIsBossNpc()) { return; } NpcScript.TriggerRemovePointNpc(1, CannonScript, pAmmoType); if (NpcScript.IsCaiPiaoZhanChe) { SSCaiPiaoDataManage.GameCaiPiaoData.DeCaiState deCaiType = SSCaiPiaoDataManage.GameCaiPiaoData.DeCaiState.ZhanChe; //彩票boss或战车npc. if (NpcScript.GetIsBossNpc()) { deCaiType = SSCaiPiaoDataManage.GameCaiPiaoData.DeCaiState.JPBoss; } if (XkPlayerCtrl.GetInstanceFeiJi().m_SpawnNpcManage.m_CaiPiaoDataManage != null) { XkPlayerCtrl.GetInstanceFeiJi().m_SpawnNpcManage.m_CaiPiaoDataManage.m_GameCaiPiaoData.SubGameDeCaiValByDeCaiState(playerSt, deCaiType); } } else { //普通npc被击杀. if (XkGameCtrl.GetInstance().m_PlayerJiChuCaiPiaoData != null && DeathExplodePoint != null) { //随机送出正常得彩. XkGameCtrl.GetInstance().m_PlayerJiChuCaiPiaoData.CheckPlayerSongPiaoInfo(playerSt, DeathExplodePoint.position); } } } else if (CannonScript != null) { CannonScript.OnRemoveCannon(playerSt, 1); //炮台类npc被击杀. if (XkGameCtrl.GetInstance().m_PlayerJiChuCaiPiaoData != null && DeathExplodePoint != null) { //随机送出正常得彩. XkGameCtrl.GetInstance().m_PlayerJiChuCaiPiaoData.CheckPlayerSongPiaoInfo(playerSt, DeathExplodePoint.position); } } } }
public void SetAmmoStateJiQiang(PlayerAmmoType ammoType) { AmmoStateJiQiang = ammoType; }
GameObject GetPlayerAmmo(PlayerAmmoType ammoType, Vector3 ammoPos, Quaternion ammoRot, int ammoIndex = 0) { int max = 0; GameObject objAmmo = null; GameObject ammoPrefab = PuTongAmmo; PlayerAmmoCtrl ammoScript = null; PlayerAmmoCtrl ammoPrefabScript = null; bool isFindAmmo = false; //Debug.Log("Unity:"+"ammoType "+ammoType+", ammoIndex "+ammoIndex+", GetPlayerAmmo"); switch (ammoType) { case PlayerAmmoType.PuTongAmmo: max = AmmoList_TK.Count; for (int i = 0; i < max; i++) { if (!AmmoList_TK[i].gameObject.activeSelf) { ammoPrefabScript = PuTongAmmo.GetComponent<PlayerAmmoCtrl>(); if (IsChangChengFire) { ammoPrefabScript = ChangChengAmmo.GetComponent<PlayerAmmoCtrl>(); } if (IsQiangJiFire) { ammoPrefabScript = QiangJiAmmo.GetComponent<PlayerAmmoCtrl>(); } if (IsHuoLiAllOpen) { ammoPrefabScript = AmmoHuoLiOpenJQ.GetComponent<PlayerAmmoCtrl>(); } ammoScript = AmmoList_TK[i].gameObject.GetComponent<PlayerAmmoCtrl>(); if (ammoPrefabScript.AmmoIndex == ammoScript.AmmoIndex) { objAmmo = AmmoList_TK[i].gameObject; isFindAmmo = true; break; } } } if (!isFindAmmo) { objAmmo = null; } if (objAmmo == null) { if (IsChangChengFire) { ammoPrefab = ChangChengAmmo; } if (IsQiangJiFire) { ammoPrefab = QiangJiAmmo; } if (IsHuoLiAllOpen) { ammoPrefab = AmmoHuoLiOpenJQ; } objAmmo = SpawnPlayerAmmo(ammoPrefab, ammoPos, ammoRot); HandleAmmoList( objAmmo.GetComponent<PlayerAmmoCtrl>() ); } break; case PlayerAmmoType.DaoDanAmmo: max = AmmoDaoDanList_TK.Count; for (int i = 0; i < max; i++) { if (!AmmoDaoDanList_TK[i].gameObject.activeSelf) { ammoPrefabScript = DaoDanZPAmmo.GetComponent<PlayerAmmoCtrl>(); if (IsHuoLiAllOpen) { ammoPrefabScript = AmmoHuoLiOpenZP.GetComponent<PlayerAmmoCtrl>(); } ammoScript = AmmoDaoDanList_TK[i].gameObject.GetComponent<PlayerAmmoCtrl>(); if (ammoPrefabScript.AmmoIndex == ammoScript.AmmoIndex) { objAmmo = AmmoDaoDanList_TK[i].gameObject; isFindAmmo = true; break; } } } if (!isFindAmmo) { objAmmo = null; } if (objAmmo == null) { ammoPrefab = DaoDanZPAmmo; if (IsHuoLiAllOpen) { ammoPrefab = AmmoHuoLiOpenZP; } objAmmo = SpawnPlayerAmmo(ammoPrefab, ammoPos, ammoRot); HandleAmmoList( objAmmo.GetComponent<PlayerAmmoCtrl>() ); } break; /*case PlayerAmmoType.GaoBaoAmmo: max = AmmoGaoBaoList_TK.Count; for (int i = 0; i < max; i++) { if (!AmmoGaoBaoList_TK[i].gameObject.activeSelf) { objAmmo = AmmoGaoBaoList_TK[i].gameObject; break; } } if (objAmmo == null) { objAmmo = SpawnPlayerAmmo(GaoBaoDanAmmo, ammoPos, ammoRot); HandleAmmoList( objAmmo.GetComponent<PlayerAmmoCtrl>() ); } break;*/ case PlayerAmmoType.SanDanAmmo: max = AmmoSanDanList_TK.Count; for (int i = 0; i < max; i++) { if (!AmmoSanDanList_TK[i].gameObject.activeSelf) { if (ammoIndex == 1) { ammoPrefabScript = AmmoSanDanZP.GetComponent<PlayerAmmoCtrl>(); } ammoScript = AmmoSanDanList_TK[i].gameObject.GetComponent<PlayerAmmoCtrl>(); if (ammoPrefabScript.AmmoIndex == ammoScript.AmmoIndex) { objAmmo = AmmoSanDanList_TK[i].gameObject; isFindAmmo = true; break; } } } if (!isFindAmmo) { objAmmo = null; } if (objAmmo == null) { if (ammoIndex == 1) { objAmmo = SpawnPlayerAmmo(AmmoSanDanZP, ammoPos, ammoRot); } HandleAmmoList( objAmmo.GetComponent<PlayerAmmoCtrl>() ); } break; /*case PlayerAmmoType.GenZongAmmo: max = AmmoGenZongDanList_TK.Count; for (int i = 0; i < max; i++) { if (!AmmoGenZongDanList_TK[i].gameObject.activeSelf) { objAmmo = AmmoGenZongDanList_TK[i].gameObject; break; } } if (objAmmo == null) { objAmmo = SpawnPlayerAmmo(GenZongDanAmmo, ammoPos, ammoRot); HandleAmmoList( objAmmo.GetComponent<PlayerAmmoCtrl>() ); } break;*/ case PlayerAmmoType.PaiJiPaoAmmo: max = AmmoPaiJiPaoList_TK.Count; for (int i = 0; i < max; i++) { if (!AmmoPaiJiPaoList_TK[i].gameObject.activeSelf) { objAmmo = AmmoPaiJiPaoList_TK[i].gameObject; break; } } if (objAmmo == null) { objAmmo = SpawnPlayerAmmo(PaiJiPaoAmmo, ammoPos, ammoRot); HandleAmmoList( objAmmo.GetComponent<PlayerAmmoCtrl>() ); } break; case PlayerAmmoType.ChuanTouAmmo: max = AmmoChuanTouDanList_TK.Count; for (int i = 0; i < max; i++) { if (!AmmoChuanTouDanList_TK[i].gameObject.activeSelf) { objAmmo = AmmoChuanTouDanList_TK[i].gameObject; break; } } if (objAmmo == null) { objAmmo = SpawnPlayerAmmo(ChuanTouDanAmmo, ammoPos, ammoRot); HandleAmmoList( objAmmo.GetComponent<PlayerAmmoCtrl>() ); } break; /*case PlayerAmmoType.JianSuAmmo: max = AmmoJianSuDanList_TK.Count; for (int i = 0; i < max; i++) { if (!AmmoJianSuDanList_TK[i].gameObject.activeSelf) { objAmmo = AmmoJianSuDanList_TK[i].gameObject; break; } } if (objAmmo == null) { objAmmo = SpawnPlayerAmmo(JianSuDanAmmo, ammoPos, ammoRot); HandleAmmoList( objAmmo.GetComponent<PlayerAmmoCtrl>() ); } break;*/ } if (objAmmo != null) { objAmmo.transform.position = ammoPos; objAmmo.transform.rotation = ammoRot; } return objAmmo; }
GameObject GetPlayerAmmo(PlayerAmmoType ammoType, Vector3 ammoPos, Quaternion ammoRot) { int max = 0; GameObject objAmmo = null; switch (ammoType) { case PlayerAmmoType.PuTongAmmo: if (PlayerStEnum == PlayerTypeEnum.FeiJi) { max = AmmoList.Count; for (int i = 0; i < max; i++) { if (!AmmoList[i].gameObject.activeSelf) { objAmmo = AmmoList[i].gameObject; break; } } } else if (PlayerStEnum == PlayerTypeEnum.TanKe) { max = AmmoList_TK.Count; for (int i = 0; i < max; i++) { if (!AmmoList_TK[i].gameObject.activeSelf) { objAmmo = AmmoList_TK[i].gameObject; break; } } } if (objAmmo == null) { objAmmo = SpawnPlayerAmmo(PuTongAmmo, ammoPos, ammoRot); HandleAmmoList(objAmmo.GetComponent <PlayerAmmoCtrl>()); } break; case PlayerAmmoType.GaoBaoAmmo: if (PlayerStEnum == PlayerTypeEnum.FeiJi) { max = AmmoGaoBaoList.Count; for (int i = 0; i < max; i++) { if (!AmmoGaoBaoList[i].gameObject.activeSelf) { objAmmo = AmmoGaoBaoList[i].gameObject; break; } } } else if (PlayerStEnum == PlayerTypeEnum.TanKe) { max = AmmoGaoBaoList_TK.Count; for (int i = 0; i < max; i++) { if (!AmmoGaoBaoList_TK[i].gameObject.activeSelf) { objAmmo = AmmoGaoBaoList_TK[i].gameObject; break; } } } if (objAmmo == null) { objAmmo = SpawnPlayerAmmo(GaoBaoDanAmmo, ammoPos, ammoRot); HandleAmmoList(objAmmo.GetComponent <PlayerAmmoCtrl>()); } break; } if (objAmmo != null) { Transform tranAmmo = objAmmo.transform; tranAmmo.position = ammoPos; tranAmmo.rotation = ammoRot; } return(objAmmo); }
internal void CheckPlayerBaoJiDengJi(PlayerAmmoType ammoType, PlayerEnum indexPlayer, XKNpcHealthCtrl npcHealth) { int indexVal = (int)indexPlayer - 1; if (indexVal >= 0 && indexVal <= 3) { if (m_TestBaoJiangData != null) { if (m_TestBaoJiangData.IsOpenTest == true) { if (m_TestBaoJiangData.IndexBaoJi >= 0 && m_TestBaoJiangData.IndexBaoJi <= 3) { //测试暴击数据信息. indexVal = m_TestBaoJiangData.IndexBaoJi; m_PlayerBaoJiDt[indexVal].BaoJiDengJi = indexVal; return; } } } switch (ammoType) { case PlayerAmmoType.DaoDanAmmo: case PlayerAmmoType.PaiJiPaoAmmo: case PlayerAmmoType.ChuanTouAmmo: case PlayerAmmoType.SanDanAmmo: case PlayerAmmoType.ChongJiBoAmmo: { if (Time.time - m_PlayerBaoJiDt[indexVal].TimeBaoJi > 0.05f) { //玩家导弹暴击间隔时间必须大于导弹发射的冷却时间. if (npcHealth != null && npcHealth.GetIsDaiJinQuanNpc() == true) { //只有代金券Npc才可以被暴击. if (Time.time - m_PlayerBaoJiDt[indexVal].TimeBaoJi <= m_TimeBaoJi) { //暴击间隔时间必须小于设定数值. m_PlayerBaoJiDt[indexVal].ShiWuCount = 0; if (m_PlayerBaoJiDt[indexVal].BaoJiDengJi < 3) { //最高4档. m_PlayerBaoJiDt[indexVal].BaoJiDengJi++; } if (m_PlayerBaoJiDt[indexVal].BaoJiDengJi > 3) { m_PlayerBaoJiDt[indexVal].BaoJiDengJi = 3; } } else { m_PlayerBaoJiDt[indexVal].ShiWuCount++; } //SSDebug.LogWarning("npcHealth ===================== " + npcHealth // + ", BaoJiDengJi ==== " + m_PlayerBaoJiDt[indexVal].BaoJiDengJi // + ", ShiWuCount ==== " + m_PlayerBaoJiDt[indexVal].ShiWuCount // + ", time ==== " + Time.time.ToString("f3")); m_PlayerBaoJiDt[indexVal].TimeBaoJi = Time.time; if (m_PlayerBaoJiDt[indexVal].ShiWuCount >= 1) { //失误次数超过n次重置暴击等级信息. //暴击失效. m_PlayerBaoJiDt[indexVal].Reset(); } } } break; } } } }
public void OnDamageNpc(PlayerAmmoType state, PlayerEnum playerSt) { if (IsDeathNpc) { return; } if (NpcScript == null || (NpcScript != null && !NpcScript.GetIsWuDi())) { switch (state) { case PlayerAmmoType.PuTongAmmo: PuTongAmmoCount++; break; case PlayerAmmoType.GaoBaoAmmo: GaoBaoAmmoCount++; // Debug.Log(gameObject.name+":: GaoBaoAmmoCount "+GaoBaoAmmoCount+", MaxGaoBaoAmmo "+MaxGaoBaoAmmo // +", playerSt "+playerSt); break; case PlayerAmmoType.DaoDanAmmo: DaoDanAmmoCount++; // Debug.Log(gameObject.name+":: DaoDanAmmoCount "+MaxDaoDanAmmo+", MaxGaoBaoAmmo "+MaxDaoDanAmmo // +", playerSt "+playerSt); break; } } if (NpcShouJiFanKui != null) { NpcShouJiFanKui.PlayNpcDamageEvent(); } AmmoHurtCount++; if (MaxAmmoHurtLiZi > 0 && AmmoHurtCount >= MaxAmmoHurtLiZi) { if (HurtLiZiObj != null && !HurtLiZiObj.activeSelf) { HurtLiZiObj.SetActive(true); } } int puTongAmmoNum = MaxPuTongAmmo; //单机单人. if (XkGameCtrl.GameModeVal == GameMode.LianJi && XkPlayerCtrl.PlayerTranFeiJi != null && XkPlayerCtrl.PlayerTranTanKe != null) { if (XkGameCtrl.IsActivePlayerOne && XkGameCtrl.IsActivePlayerTwo) { puTongAmmoNum = LJMaxPuTongAmmoSR; //联机双人. } else { puTongAmmoNum = LJMaxPuTongAmmoSR; //联机单人. } } else { if (XkGameCtrl.IsActivePlayerOne && XkGameCtrl.IsActivePlayerTwo) { puTongAmmoNum = MaxPuTongAmmoSR; //单机双人. } } if (PuTongAmmoCount >= puTongAmmoNum || GaoBaoAmmoCount >= MaxGaoBaoAmmo || DaoDanAmmoCount >= MaxDaoDanAmmo) { if (IsDeathNpc) { return; } IsDeathNpc = true; CheckHiddenNpcObjArray(); bool isAddKillNpcNum = true; if (NpcScript != null && CannonScript != null) { if (NpcScript.GetIsDeathNPC()) { isAddKillNpcNum = false; } } if (!IsYouTongNpc) { if (Network.peerType != NetworkPeerType.Server) { if (isAddKillNpcNum) { XkGameCtrl.GetInstance().AddPlayerKillNpc(playerSt, NpcJiFen); } XkGameCtrl.GetInstance().AddYouLiangDian(YouLiangDian, playerSt); if (YouLiangDianUICtrl.GetInstance() != null) { YouLiangDianUICtrl.GetInstance().HandleNpcYouLiangDian(YouLiangDian, transform); } } } else { if (playerSt != PlayerEnum.Null) { CheckYouTongDamageNpc(); } } if (NpcScript != null) { if (CannonScript != null) { CannonScript.OnRemoveCannon(playerSt, 1); } NpcScript.TriggerRemovePointNpc(1, CannonScript); } else if (CannonScript != null) { CannonScript.OnRemoveCannon(playerSt, 1); } } }
void HandleAmmoList(PlayerAmmoCtrl scriptAmmo) { PlayerAmmoType ammoType = scriptAmmo.AmmoType; switch (ammoType) { case PlayerAmmoType.PuTongAmmo: if (AmmoList_TK.Contains(scriptAmmo)) { return; } AmmoList_TK.Add(scriptAmmo); break; case PlayerAmmoType.DaoDanAmmo: if (AmmoDaoDanList_TK.Contains(scriptAmmo)) { return; } AmmoDaoDanList_TK.Add(scriptAmmo); break; case PlayerAmmoType.GaoBaoAmmo: if (AmmoGaoBaoList_TK.Contains(scriptAmmo)) { return; } AmmoGaoBaoList_TK.Add(scriptAmmo); break; case PlayerAmmoType.SanDanAmmo: if (AmmoSanDanList_TK.Contains(scriptAmmo)) { return; } AmmoSanDanList_TK.Add(scriptAmmo); break; case PlayerAmmoType.GenZongAmmo: if (AmmoGenZongDanList_TK.Contains(scriptAmmo)) { return; } AmmoGenZongDanList_TK.Add(scriptAmmo); break; case PlayerAmmoType.PaiJiPaoAmmo: if (AmmoPaiJiPaoList_TK.Contains(scriptAmmo)) { return; } AmmoPaiJiPaoList_TK.Add(scriptAmmo); break; case PlayerAmmoType.ChuanTouAmmo: if (AmmoChuanTouDanList_TK.Contains(scriptAmmo)) { return; } AmmoChuanTouDanList_TK.Add(scriptAmmo); break; case PlayerAmmoType.JianSuAmmo: if (AmmoJianSuDanList_TK.Contains(scriptAmmo)) { return; } AmmoJianSuDanList_TK.Add(scriptAmmo); break; } }