Example #1
0
    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();
    }
Example #2
0
    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();
    }