void OnCollisionEnter(Collision collision) { //Debug.Log("**********OnCollisionEnter-> collision "+collision.gameObject.name); XKPlayerMoveCtrl playerScript = collision.gameObject.GetComponent <XKPlayerMoveCtrl>(); if (playerScript == null) { return; } if (NpcJiFen == NpcJiFenEnum.Boss || !IsCanHitNpc) { if (Time.realtimeSinceStartup - TimeHitBoss < 1f) { return; } TimeHitBoss = Time.realtimeSinceStartup; Vector3 pushDir = Vector3.zero; Vector3 playerPos = playerScript.transform.position; Vector3 hitPos = transform.position; playerPos.y = hitPos.y = 0f; pushDir = playerPos - hitPos; playerScript.PushPlayerTanKe(pushDir); if (!playerScript.GetIsWuDiState()) { XkGameCtrl.GetInstance().SubGamePlayerHealth(playerScript.PlayerIndex, PlayerDamage); } return; } if (IsDeathNpc) { return; } if (!playerScript.GetIsWuDiState()) { XkGameCtrl.GetInstance().SubGamePlayerHealth(playerScript.PlayerIndex, PlayerDamage); } CheckNpcDeathExplode(); if (!IsYouTongNpc) { XkGameCtrl.GetInstance().AddPlayerKillNpc(playerScript.PlayerIndex, NpcJiFen, JiFenVal); } if (NpcScript != null) { IsDeathNpc = true; NpcScript.TriggerRemovePointNpc(1); } else if (CannonScript != null) { IsDeathNpc = true; CannonScript.OnRemoveCannon(PlayerEnum.Null, 1); } CheckHiddenNpcObjArray(); }
void OnCollisionEnter(Collision collision) { PlayerZhiShengJiCtrl playerScript = collision.gameObject.GetComponent <PlayerZhiShengJiCtrl>(); if (playerScript == null) { return; } if (IsDeathNpc) { return; } // Debug.Log("**********OnCollisionEnter-> collision "+collision.gameObject.name); if (playerScript.GetPlayerType() != PlayerTypeEnum.TanKe) { return; } if (XkGameCtrl.GameJiTaiSt != GameJiTaiType.TanKeJiTai) { return; } bool isSetDianJiState = false; if (!IsYouTongNpc) { isSetDianJiState = true; XkGameCtrl.GetInstance().AddPlayerKillNpc(PlayerEnum.Null, NpcJiFen); XkGameCtrl.GetInstance().AddYouLiangDian(YouLiangDian, PlayerEnum.Null); YouLiangDianUICtrl.GetInstance().HandleNpcYouLiangDian(YouLiangDian, transform); } if (NpcScript != null) { IsDeathNpc = true; isSetDianJiState = true; NpcScript.TriggerRemovePointNpc(1); } else if (CannonScript != null) { IsDeathNpc = true; isSetDianJiState = true; CannonScript.OnRemoveCannon(PlayerEnum.Null, 1); } if (isSetDianJiState) { XKPlayerAutoFire.SetPlayerZuoYiDianJiState(PlayerEnum.PlayerOne, 2); XKPlayerAutoFire.SetPlayerZuoYiDianJiState(PlayerEnum.PlayerTwo, 2); } CheckHiddenNpcObjArray(); }
//public static int TestNum = 0; //int TestNumRecord = 0; void Update() { //if (NpcScript != null && NpcScript.IsCaiPiaoZhanChe) //{ // //彩票战车或boss不进行检测. // return; //} if (m_XKDaPaoCom != null && m_XKDaPaoCom.SpawnPointScript == null) { if (Time.time - m_LastFanWeiHouTime > 1f) { m_LastFanWeiHouTime = Time.time; if (!IsDeathNpc) { if (m_FanWeiHou != null && !IsHitFanWeiHou) { Vector3 posTA = m_FanWeiHou.transform.position; Vector3 posTB = transform.position; posTA.y = posTB.y = 0f; Vector3 vecForward = -m_FanWeiHou.transform.forward; Vector3 vecAB = posTB - posTA; vecForward.y = vecAB.y = 0f; if (Vector3.Dot(vecForward, vecAB) < 0f) { float dis = Vector3.Distance(posTA, posTB); if (dis > 15f && dis < 40f) { //Debug.LogError("======== remove test name =============== " + m_XKDaPaoCom.name); IsHitFanWeiHou = true; m_XKDaPaoCom.OnRemoveCannon(PlayerEnum.Null, 0, 1f); return; } } } } } } if (NpcScript == null && CannonScript != null) { if (Time.time - m_LastFanWeiHouTime > 1f) { m_LastFanWeiHouTime = Time.time; if (!IsDeathNpc) { if (m_FanWeiHou != null && !IsHitFanWeiHou) { Vector3 posTA = m_FanWeiHou.transform.position; Vector3 posTB = transform.position; posTA.y = posTB.y = 0f; Vector3 vecForward = -m_FanWeiHou.transform.forward; Vector3 vecAB = posTB - posTA; vecForward.y = vecAB.y = 0f; if (Vector3.Dot(vecForward, vecAB) < 0f) { if (Vector3.Distance(posTA, posTB) > 15f) { //Debug.LogError("remove test name =============== " + CannonScript.DaPaoCtrlScript.name // + ", TestNumRecord == " + TestNumRecord); IsHitFanWeiHou = true; CannonScript.OnRemoveCannon(PlayerEnum.Null, 1); return; } } } } } } if (Time.time - TimeLastVal < 10f) { return; } TimeLastVal = Time.time; if (!IsSpawnObj) { return; } if (!IsAutoRemoveNpc) { return; } if (IsDeathNpc) { return; } if (GameCameraTr == null) { return; } Vector3 posA = GameCameraTr.position; Vector3 posB = DeathExplodePoint.position; posA.y = posB.y = 0f; if (Vector3.Distance(posA, posB) < DisCamera) { return; } if (DisCamera == MinDisCamera) { Vector3 vecA = GameCameraTr.forward; Vector3 vecB = Vector3.zero; vecB = posA - posB; vecA.y = vecB.y = 0f; if (Vector3.Dot(vecA, vecB) <= 0f) { return; } } MakeNpcHidden(); }