void OnTriggerEnter(Collider other) { XKNpcMoveCtrl npcMoveCom = other.gameObject.GetComponent <XKNpcMoveCtrl>(); if (npcMoveCom != null && npcMoveCom.IsCaiPiaoZhanChe) { //Debug.Log("Unity: OnTriggerEnter******************name === " + npcMoveCom.name); //彩票战车和boss进入摄像机盒子. bool isEnter = false; switch (m_TriggerState) { case TriggerState.JPBoss: { if (npcMoveCom.GetIsBossNpc() == true) { isEnter = true; } if (npcMoveCom.IsCaiPiaoZhanChe == false) { //普通npc进入JPBoss的镜头范围盒子. if (XkPlayerCtrl.GetInstanceFeiJi() != null) { if (XkPlayerCtrl.GetInstanceFeiJi().m_SpawnNpcManage != null) { XkPlayerCtrl.GetInstanceFeiJi().m_SpawnNpcManage.AddPuTongNpcToBuJiDt(npcMoveCom.gameObject); } } } break; } case TriggerState.ZhanCheBoss: { if (npcMoveCom.GetIsBossNpc() == false) { isEnter = true; } break; } } if (isEnter == true) { npcMoveCom.SetIsEnterCameraBox(); } } }
public void SetNpcMoveScript(XKNpcMoveCtrl script) { IsSpawnObj = true; NpcScript = script; if (NpcScript != null && NpcJiFen == NpcJiFenEnum.Boss) { NpcScript.SetIsBossNpc(true); } NpcNameInfo = script.name; ResetNpcHealthInfo(); if (m_CaiPiaoNpcUI != null) { if (NpcScript != null) { if (NpcScript.IsCaiPiaoZhanChe == true) { if (NpcScript.GetIsBossNpc() == true) { m_CaiPiaoNpcUI.ShowNumUI(SSCaiPiaoDataManage.GameCaiPiaoData.DeCaiState.JPBoss, this); } else { m_CaiPiaoNpcUI.ShowNumUI(SSCaiPiaoDataManage.GameCaiPiaoData.DeCaiState.ZhanChe, this); } } NpcScript.m_CaiPiaoNpcUI = m_CaiPiaoNpcUI; } } TimeLastVal = Time.time; }
void OnTriggerExit(Collider other) { XKNpcMoveCtrl npcMoveCom = other.gameObject.GetComponent <XKNpcMoveCtrl>(); if (npcMoveCom != null && npcMoveCom.IsCaiPiaoZhanChe) { //Debug.Log("Unity: OnTriggerExit******************name === " + npcMoveCom.name); if (npcMoveCom.GetIsBossNpc() == true) { //Boss走出镜头范围. if (XkGameCtrl.GetInstance() != null && XkGameCtrl.GetInstance().m_AiPathGroup != null && XkGameCtrl.GetInstance().m_AiPathGroup.m_CameraMoveType != AiPathGroupCtrl.MoveState.YuLe) { XkGameCtrl.GetInstance().m_AiPathGroup.SetCameraMoveType(AiPathGroupCtrl.MoveState.Default); } npcMoveCom.TriggerRemovePointNpc(0); //boss删除后切换背景音效. AudioBeiJingCtrl.StopGameBeiJingAudio(); //镜头继续移动. XkGameCtrl.GetInstance().SetGameCameraIsMoveing(true, NpcJiFenEnum.Boss); } else { //彩票战车npc走出镜头范围. npcMoveCom.TriggerRemovePointNpc(0); //镜头继续移动. XkGameCtrl.GetInstance().SetGameCameraIsMoveing(true, NpcJiFenEnum.CheLiang); } } }
/// <summary> /// 恢复代金券npc的血值数据及UI信息. /// </summary> internal void BackDaiJinQuanNpcBlood() { if (NpcScript.IsZhanCheNpc || NpcScript.IsJPBossNpc) { if (XkGameCtrl.GetInstance().m_GamePlayerAiData.IsActiveAiPlayer == false) { //当有玩家激活游戏时,恢复彩票战车和JPBoss的血值信息. if (XkGameCtrl.GetInstance().m_CaiPiaoHealthDt != null) { if (NpcScript.GetIsBossNpc() == true) { //跟新JPBoss的血值数据. //MaxPuTongAmmo = XkGameCtrl.GetInstance().m_CaiPiaoHealthDt.m_CurentTotalHealthDt.JPBossHealth.MaxPuTongAmmo; //SSDebug.Log("*********************************************************44444444444444444444444444444444"); SetJPBossHealthInfo(NpcScript); } else { //跟新战车Npc的血值数据. MaxPuTongAmmo = XkGameCtrl.GetInstance().m_CaiPiaoHealthDt.m_CurrentTotalHealthDt.ZhanCheHealth.MaxPuTongAmmo; } } //重置代金券npc的伤害数值. PuTongAmmoCount = 0; IsBackDaiJinQuanNpcBlood = true; m_TimeLastBackDaiJinQuanNpcBlood = Time.time; //重置代金券npc的血条UI信息. float perVal = 0.5f; if (XkGameCtrl.GetInstance().m_CaiPiaoHealthDt != null) { perVal = XkGameCtrl.GetInstance().m_CaiPiaoHealthDt.m_CurrentTotalHealthDt.UIHealthPer; //重置Boss为不可以被击爆,避免玩家击爆AI坦克刷出的可以被击爆的Boss. XkGameCtrl.GetInstance().m_CaiPiaoHealthDt.m_CurrentTotalHealthDt.IsCanJiBao = false; } SSUIRoot.GetInstance().m_GameUIManage.BackBloodBossAmount(perVal); } } }
public void OnTriggerEnter(Collider other) { XKNpcMoveCtrl npcMoveCom = other.gameObject.GetComponent <XKNpcMoveCtrl>(); if (npcMoveCom != null && npcMoveCom.IsCaiPiaoZhanChe && npcMoveCom.GetIsBossNpc()) { //彩票Boss. if (npcMoveCom.m_CaiPiaoBossMoveCom != null) { npcMoveCom.m_CaiPiaoBossMoveCom.OnHitBossMoveTrigger(this); } } }
public void SetNpcMoveScript(XKNpcMoveCtrl script) { IsSpawnObj = true; NpcScript = script; if (NpcScript != null && NpcJiFen == NpcJiFenEnum.Boss) { NpcScript.SetIsBossNpc(true); } NpcNameInfo = script.name; ResetNpcHealthInfo(); if (m_CaiPiaoNpcUI != null) { if (NpcScript != null) { if (NpcScript.IsCaiPiaoZhanChe == true) { if (XkGameCtrl.GetInstance().m_CaiPiaoHealthDt != null && IsGetTotalHealthData == false) { IsGetTotalHealthData = true; //获取获取JPBoss和战车Npc的血值数据. if (NpcScript.IsJPBossNpc == true) { //JPBoss战车. XkGameCtrl.GetInstance().m_CaiPiaoHealthDt.GetTotalHealthData(SSCaiPiaoDataManage.GameCaiPiaoData.DaiJinQuanState.JPBossDaiJinQuan); } else { //战车01或02. XkGameCtrl.GetInstance().m_CaiPiaoHealthDt.GetTotalHealthData(NpcScript.m_DaiJinQuanState); } //保存代金券npc的血条脚本. XkGameCtrl.GetInstance().m_CaiPiaoHealthDt.SaveDaiJinQuanHealth(this); } SetRecordMaxPuTongAmmo(); if (XkGameCtrl.GetInstance().m_GamePlayerAiData.IsActiveAiPlayer == true) { //没有玩家激活游戏,使用游戏记录的血值数据. MaxPuTongAmmo = MaxPuTongAmmoCache; } else { //有玩家正在进行游戏,使用游戏配置的血值数据. if (NpcScript.GetIsBossNpc() == true) { if (XkGameCtrl.GetInstance().m_CaiPiaoHealthDt != null) { //跟新JPBoss的血值数据. MaxPuTongAmmo = XkGameCtrl.GetInstance().m_CaiPiaoHealthDt.m_CurrentTotalHealthDt.JPBossHealth.MaxPuTongAmmo; //SSDebug.Log("*********************************************************3333333333333333333333333333333"); } } else { if (XkGameCtrl.GetInstance().m_CaiPiaoHealthDt != null) { //跟新战车Npc的血值数据. MaxPuTongAmmo = XkGameCtrl.GetInstance().m_CaiPiaoHealthDt.m_CurrentTotalHealthDt.ZhanCheHealth.MaxPuTongAmmo; } } } if (NpcScript.GetIsBossNpc() == true) { m_CaiPiaoNpcUI.ShowNumUI(SSCaiPiaoDataManage.GameCaiPiaoData.DeCaiState.JPBoss, this); } else { m_CaiPiaoNpcUI.ShowNumUI(SSCaiPiaoDataManage.GameCaiPiaoData.DeCaiState.ZhanChe, this); } //创建代金券npc的血条信息. float perVal = 0.5f; if (XkGameCtrl.GetInstance().m_CaiPiaoHealthDt != null) { perVal = XkGameCtrl.GetInstance().m_CaiPiaoHealthDt.m_CurrentTotalHealthDt.UIHealthPer; } SSUIRoot.GetInstance().m_GameUIManage.CreatDaiJinQuanNpcXueTiaoUI(perVal); } NpcScript.m_CaiPiaoNpcUI = m_CaiPiaoNpcUI; } } TimeLastVal = Time.time; }
void OnTriggerExit(Collider other) { XKNpcMoveCtrl npcMoveCom = other.gameObject.GetComponent <XKNpcMoveCtrl>(); if (npcMoveCom != null && npcMoveCom.IsCaiPiaoZhanChe) { //Debug.Log("Unity: OnTriggerExit******************name === " + npcMoveCom.name); bool isExit = false; switch (m_TriggerState) { case TriggerState.JPBoss: { if (npcMoveCom.IsEnterCameraBox == true && npcMoveCom.GetIsBossNpc() == true) { isExit = true; } if (npcMoveCom.IsCaiPiaoZhanChe == false) { //普通npc走出JPBoss的镜头范围盒子. if (XkPlayerCtrl.GetInstanceFeiJi() != null) { if (XkPlayerCtrl.GetInstanceFeiJi().m_SpawnNpcManage != null) { XkPlayerCtrl.GetInstanceFeiJi().m_SpawnNpcManage.RemovePuTongNpcToBuJiDt(npcMoveCom.gameObject); } } } break; } case TriggerState.ZhanCheBoss: { if (npcMoveCom.IsEnterCameraBox == true && npcMoveCom.GetIsBossNpc() == false) { isExit = true; } break; } } if (isExit == false) { return; } if (npcMoveCom.GetIsBossNpc() == true) { //Boss走出镜头范围. if (XkGameCtrl.GetInstance() != null && XkGameCtrl.GetInstance().m_AiPathGroup != null && XkGameCtrl.GetInstance().m_AiPathGroup.m_CameraMoveType != AiPathGroupCtrl.MoveState.YuLe) { XkGameCtrl.GetInstance().m_AiPathGroup.SetCameraMoveType(AiPathGroupCtrl.MoveState.Default); } npcMoveCom.TriggerRemovePointNpc(0); //boss删除后切换背景音效. AudioBeiJingCtrl.StopGameBeiJingAudio(); //镜头继续移动. XkGameCtrl.GetInstance().SetGameCameraIsMoveing(true, NpcJiFenEnum.Boss); } else { //彩票战车npc走出镜头范围. npcMoveCom.TriggerRemovePointNpc(0); //镜头继续移动. XkGameCtrl.GetInstance().SetGameCameraIsMoveing(true, NpcJiFenEnum.CheLiang); //SSDebug.LogWarning("SSTriggerCamerBox::OnTriggerExit -> time ==================== " + Time.time); } } }
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); } } } }