예제 #1
0
    void CheckDaoJuSpawnPointList()
    {
        Transform[] trPointArray = XKPlayerCamera.GetInstanceFeiJi().GetDaoJuSpawnPoint();
        int         max          = trPointArray.Length;

        if (max <= 0)
        {
            return;
        }

        float   disVal = DisDaoJuVal;
        Vector3 posA   = transform.position;
        Vector3 posB   = Vector3.zero;

        posA.y = 0f;
        for (int i = 0; i < max; i++)
        {
            posB   = trPointArray[i].position;
            posB.y = 0f;
            if (Vector3.Distance(posA, posB) <= disVal && Vector3.Distance(posA, posB) > 1f)
            {
                PointList.Add(trPointArray[i]);
            }
        }
    }
    /// <summary>
    /// 使血包道具向上运动.
    /// </summary>
    void MoveDaoJuToHeightPos()
    {
        //SSDebug.LogWarning("MoveDaoJuToHeightPos -> daoJuName ================== " + name);
        SetBuJiBaoRigbody(true);
        Vector3 endPos = transform.position;

        if (XKPlayerCamera.GetInstanceFeiJi() != null && XKPlayerCamera.GetInstanceFeiJi().m_XuBaoDaoJuPoint != null)
        {
            //在游戏镜头上找到血包道具飞向的点.
            endPos = XKPlayerCamera.GetInstanceFeiJi().m_XuBaoDaoJuPoint.position;
        }
        else
        {
            //在游戏镜头上没有找到血包道具飞向的点.
            if (XkGameCtrl.GetInstance() != null && XkGameCtrl.GetInstance().m_XueBaoDaoJuData != null)
            {
                //使血包道具向上运动.
                endPos += new Vector3(0f, XkGameCtrl.GetInstance().m_XueBaoDaoJuData.m_XueBaoFlyHeight, 0f);
            }
        }

        Vector3[] path = new Vector3[2];
        path[0] = transform.position;
        path[1] = endPos;
        iTween.MoveTo(gameObject, iTween.Hash("path", path,
                                              "time", DaoJuFlyTime,
                                              "orienttopath", false,
                                              "easeType", iTween.EaseType.linear,
                                              "oncomplete", "OnEndMoveDaoJuToHeightPos"));
    }
예제 #3
0
    void Awake()
    {
        if (DaoJuSpawnPointArray != null)
        {
            DaoJuSpawnPointArray.gameObject.SetActive(true);
            List <Transform> daoJuList = new List <Transform>(DaoJuSpawnPointArray.GetComponentsInChildren <Transform>());
            daoJuList.RemoveAt(0);
            DaoJuSpawnPoint = daoJuList.ToArray();
            DaoJuSpawnPointArray.gameObject.SetActive(false);
        }

        XkPlayerCtrl script = GetComponentInParent <XkPlayerCtrl>();

        if (script != null)
        {
            switch (script.PlayerSt)
            {
            case PlayerTypeEnum.FeiJi:
                _InstanceFeiJi = this;
                break;

            case PlayerTypeEnum.TanKe:
                _InstanceTanKe = this;
                break;

            case PlayerTypeEnum.CartoonCamera:
                _InstanceCartoon = this;
                break;
            }
        }
    }
    void CreatYanHuaLiZi()
    {
        int randVal = 0;

        Transform[]  trPointArray = XKPlayerCamera.GetInstanceFeiJi().GetDaoJuSpawnPoint();
        GameObject[] liZiArray    = XkGameCtrl.GetInstance().m_CaiPiaoFlyData.m_JPBossCaiPiaoFlyDt.m_LiZiPrefabArray;

        randVal = Random.Range(0, 100) % trPointArray.Length;
        Transform point = trPointArray[randVal];

        randVal = Random.Range(0, 100) % liZiArray.Length;
        GameObject liZiPrefab = liZiArray[randVal];

        if (liZiPrefab != null && point != null)
        {
            GameObject obj = (GameObject)Instantiate(liZiPrefab, XkGameCtrl.NpcAmmoArray, point);
            if (XkGameCtrl.GetInstance().m_CaiPiaoFlyData != null)
            {
                obj.transform.position += Vector3.up * XkGameCtrl.GetInstance().m_CaiPiaoFlyData.m_BossYanHuaOffsetPY;
            }
            else
            {
                obj.transform.position += Vector3.up * 2.5f;
            }
        }
    }
예제 #5
0
    public void SetCameraMapState()
    {
        CameraCom.enabled = !CameraCom.enabled;
        if (!CameraCom.enabled)
        {
            GameJiTaiType jiTai = XkGameCtrl.GameJiTaiSt;
            switch (jiTai)
            {
            case GameJiTaiType.FeiJiJiTai:
                XKPlayerCamera.GetInstanceTanKe().SetEnableCamera(false);
                break;

            case GameJiTaiType.TanKeJiTai:
                XKPlayerCamera.GetInstanceFeiJi().SetEnableCamera(false);
                break;
            }
        }
        else
        {
            GameJiTaiType jiTai = XkGameCtrl.GameJiTaiSt;
            switch (jiTai)
            {
            case GameJiTaiType.FeiJiJiTai:
                XKPlayerCamera.GetInstanceTanKe().SetEnableCamera(true);
                break;

            case GameJiTaiType.TanKeJiTai:
                XKPlayerCamera.GetInstanceFeiJi().SetEnableCamera(true);
                break;
            }
        }
    }
예제 #6
0
    public static void CloseAllServerPortCamera()
    {
        Debug.Log("CloseAllServerPortCamera...");
        _InstanceFJ.CloseCameraServer();
        _InstanceTK.CloseCameraServer();

        if (XkPlayerCtrl.GetInstanceFeiJi() == null && XkPlayerCtrl.GetInstanceTanKe() == null)
        {
            return;
        }

        if (XkPlayerCtrl.GetInstanceFeiJi() != null && XkPlayerCtrl.GetInstanceTanKe() != null)
        {
            XKPlayerCamera.GetInstanceFeiJi().SetEnableCamera(true);
            return;
        }

        if (XkPlayerCtrl.GetInstanceFeiJi() != null)
        {
            XKPlayerCamera.GetInstanceFeiJi().SetEnableCamera(true);
        }

        if (XkPlayerCtrl.GetInstanceTanKe() != null)
        {
            XKPlayerCamera.GetInstanceTanKe().SetEnableCamera(true);
        }
    }
    void Update()
    {
        if (Time.frameCount % 5 != 0)
        {
            return;
        }

        if (Tran == null || MyCamera == null)
        {
            if (MyCamera == null)
            {
                switch (CameraType)
                {
                case PlayerTypeEnum.FeiJi:
                    if (XKPlayerCamera.GetInstanceTanKe() != null)
                    {
                        MyCamera = XKPlayerCamera.GetInstanceTanKe().transform;
                    }
                    break;

                case PlayerTypeEnum.TanKe:
                    if (XKPlayerCamera.GetInstanceFeiJi() != null)
                    {
                        MyCamera = XKPlayerCamera.GetInstanceFeiJi().transform;
                    }
                    break;
                }
            }
            return;
        }
        Tran.LookAt(MyCamera.position);
    }
예제 #8
0
    void OnSreenAlphaToMin()
    {
        if (Network.peerType != NetworkPeerType.Server)
        {
            ZhunXingTeXiaoCtrl.GetInstance().ShowZhunXingTeXiao();
        }
        else
        {
            StartCameraObj.SetActive(false);
            ScreenDanHeiObj.SetActive(false);
        }

        if (XkGameCtrl.GetInstance().IsServerCameraTest || Network.peerType == NetworkPeerType.Server)
        {
            XkGameCtrl.ActiveServerCameraTran();
            if (XKPlayerCamera.GetInstanceFeiJi() != null)
            {
                XKPlayerCamera.GetInstanceFeiJi().SetEnableCamera(false);
            }

            if (XKPlayerCamera.GetInstanceTanKe() != null)
            {
                XKPlayerCamera.GetInstanceTanKe().SetEnableCamera(false);
            }
        }
    }
    // Use this for initialization
    void Start()
    {
        CamShakeCom          = gameObject.AddComponent <CameraShake>();
        PlayerCamera         = camera;
        camera.targetTexture = null;
        CameraTran           = transform;
        XkPlayerCtrl script = GetComponentInParent <XkPlayerCtrl>();

        switch (script.PlayerSt)
        {
        case PlayerTypeEnum.FeiJi:
            _InstanceFeiJi = this;
            PlayerSt       = PlayerTypeEnum.FeiJi;
            FeiJiCameraTan = transform;
            gameObject.SetActive(false);
            if (XkGameCtrl.GetInstance().m_CaiPiaoFlyData != null)
            {
                XkGameCtrl.GetInstance().m_CaiPiaoFlyData.m_CaiPiaoEndTrP1 = m_CaiPiaoEndTrP1;
                XkGameCtrl.GetInstance().m_CaiPiaoFlyData.m_CaiPiaoEndTrP2 = m_CaiPiaoEndTrP2;
                XkGameCtrl.GetInstance().m_CaiPiaoFlyData.m_CaiPiaoEndTrP3 = m_CaiPiaoEndTrP3;
            }
            break;

        case PlayerTypeEnum.TanKe:
            _InstanceTanKe = this;
            PlayerSt       = PlayerTypeEnum.TanKe;
            TanKeCameraTan = transform;
            gameObject.SetActive(false);
            break;

        case PlayerTypeEnum.CartoonCamera:
            _InstanceCartoon = this;
            PlayerSt         = PlayerTypeEnum.CartoonCamera;
            break;
        }

        CameraObj    = gameObject;
        PlayerScript = GetComponentInParent <XkPlayerCtrl>();
        if (PlayerScript != null)
        {
            PlayerScript.SetPlayerCamera(this);
        }

        GameObject obj = new GameObject();

        obj.name                   = "CameraParent";
        CameraParent               = obj.transform;
        CameraParent.parent        = CameraTran.parent;
        CameraParent.localPosition = CameraTran.localPosition;
        CameraParent.rotation      = CameraTran.rotation;
        CameraTran.parent          = null;
        CameraTran.rotation        = CameraParent.localRotation;
        SetEnableCamera(false);
        for (int i = 0; i < PlayerSpawnPoint.Length; i++)
        {
            PlayerSpawnPoint[i].gameObject.SetActive(false);
        }
    }
예제 #10
0
 public void SetPlayerCamera(XKPlayerCamera script)
 {
     PlayerCamera = script;
     if (PlayerSt == PlayerTypeEnum.TanKe)
     {
         PaoTaiScript = GetComponentInChildren <XkPlayerTanKePaoTai>();
         PaoTaiScript.SetPlayerCameraInfo(script.transform);
     }
 }
    void OnTriggerEnter(Collider other)
    {
        if (XKTriggerKaQiuShaFire.IsCloseKaQiuShaTest)
        {
            return;             //test;
        }

        if (Network.peerType == NetworkPeerType.Server)
        {
            return;
        }

        XkPlayerCtrl playerScript = other.GetComponent <XkPlayerCtrl>();

        if (playerScript == null)
        {
            return;
        }

        if (playerScript.PlayerSt == PlayerTypeEnum.FeiJi && XkGameCtrl.GameJiTaiSt != GameJiTaiType.FeiJiJiTai)
        {
            return;
        }

        if (playerScript.PlayerSt == PlayerTypeEnum.TanKe && XkGameCtrl.GameJiTaiSt != GameJiTaiType.TanKeJiTai)
        {
            return;
        }

        Instance = this;
        Debug.Log("Unity:" + "XKTriggerCameraFieldOfView -> OnTriggerEnter...");
        XKPlayerCamera cameraScript = playerScript.GetPlayerCameraScript();

        CameraObj   = cameraScript.gameObject;
        TweenCamFOV = CameraObj.GetComponent <TweenFOV>();
        if (TweenCamFOV != null)
        {
            DestroyObject(TweenCamFOV);
        }
        PlayerCamera         = CameraObj.GetComponent <Camera>();
        CameraFieldViewStart = PlayerCamera.fieldOfView;

        TweenCamFOV          = CameraObj.AddComponent <TweenFOV>();
        TweenCamFOV.enabled  = false;
        TweenCamFOV.from     = CameraFieldViewStart;
        TweenCamFOV.to       = CameraFieldView;
        TweenCamFOV.duration = TimeChangeCamFOV;
        EventDelegate.Add(TweenCamFOV.onFinished, delegate {
            ChangeWorldTimeVal(0);
        });
        TweenCamFOV.enabled = true;
        TweenCamFOV.PlayForward();
    }
예제 #12
0
    // Use this for initialization
    void Start()
    {
        PlayerCamera         = camera;
        camera.targetTexture = null;
        CameraTran           = transform;
        XkPlayerCtrl script = GetComponentInParent <XkPlayerCtrl>();

        switch (script.PlayerSt)
        {
        case PlayerTypeEnum.FeiJi:
            _InstanceFeiJi = this;
            PlayerSt       = PlayerTypeEnum.FeiJi;
            FeiJiCameraTan = transform;
            gameObject.SetActive(false);
            break;

        case PlayerTypeEnum.TanKe:
            _InstanceTanKe = this;
            PlayerSt       = PlayerTypeEnum.TanKe;
            TanKeCameraTan = transform;
            gameObject.SetActive(false);
            break;

        case PlayerTypeEnum.CartoonCamera:
            _InstanceCartoon = this;
            PlayerSt         = PlayerTypeEnum.CartoonCamera;
            break;
        }

        CameraObj    = gameObject;
        PlayerScript = GetComponentInParent <XkPlayerCtrl>();
        if (PlayerScript != null)
        {
            PlayerScript.SetPlayerCamera(this);
        }

        GameObject obj = new GameObject();

        obj.name                   = "CameraParent";
        CameraParent               = obj.transform;
        CameraParent.parent        = CameraTran.parent;
        CameraParent.localPosition = CameraTran.localPosition;
        CameraParent.rotation      = CameraTran.rotation;
        CameraTran.parent          = null;

        if (PlayerSt != PlayerTypeEnum.CartoonCamera)
        {
            SetEnableCamera(false);
        }
    }
    void DelaySetCameraInfo()
    {
        switch (CameraType)
        {
        case PlayerTypeEnum.FeiJi:
            if (!IsNpcObj)
            {
                if (XkGameCtrl.GameJiTaiSt == GameJiTaiType.FeiJiJiTai)
                {
                    gameObject.SetActive(false);
                }
                _InstanceFJ = this;
            }

            if (XKPlayerCamera.GetInstanceTanKe() != null)
            {
                MyCamera = XKPlayerCamera.GetInstanceTanKe().transform;
            }
            break;

        case PlayerTypeEnum.TanKe:
            if (!IsNpcObj)
            {
                if (XkGameCtrl.GameJiTaiSt == GameJiTaiType.TanKeJiTai)
                {
                    gameObject.SetActive(false);
                }
                _InstanceTK = this;
            }

            if (XKPlayerCamera.GetInstanceFeiJi() != null)
            {
                MyCamera = XKPlayerCamera.GetInstanceFeiJi().transform;
            }
            break;
        }
    }
예제 #14
0
    void OnSreenAlphaToMin()
    {
        if (Network.peerType != NetworkPeerType.Server)
        {
            //ZhunXingTeXiaoCtrl.GetInstance().ShowZhunXingTeXiao();
            if (SSUIRoot.GetInstance().m_GameUIManage != null)
            {
                SSUIRoot.GetInstance().m_GameUIManage.CreatGameStartTimeUI();
            }

            if (GameStartTimeCtrl.GetInstance() != null)
            {
                GameStartTimeCtrl.GetInstance().InitPlayStartTimeUI();
            }
        }
        else
        {
            StartCameraObj.SetActive(false);
            ScreenDanHeiObj.SetActive(false);
        }

        if (/*XkGameCtrl.GetInstance().IsServerCameraTest ||*/ Network.peerType == NetworkPeerType.Server)
        {
            XkGameCtrl.ActiveServerCameraTran();
            if (XKPlayerCamera.GetInstanceFeiJi() != null)
            {
                XKPlayerCamera.GetInstanceFeiJi().SetEnableCamera(false);
            }

            if (XKPlayerCamera.GetInstanceTanKe() != null)
            {
                XKPlayerCamera.GetInstanceTanKe().SetEnableCamera(false);
            }
        }
        IsSreenAlphaToMin     = true;
        IsOpenSreenAlphaToMin = false;
    }
예제 #15
0
    void SetGenZongDanInfo()
    {
        if (AmmoType != PlayerAmmoType.GenZongAmmo)
        {
            return;
        }

        CosJiaoDuGZ = Mathf.Cos(ShanXingJiaoDu);
        if (XkGameCtrl.GetInstance() != null)
        {
            switch (MuBiaoXuanDing)
            {
            case 1:
                IndexPlayerAim = XkGameCtrl.GetInstance().GetMaxHealthPlayer();
                break;

            default:
                IndexPlayerAim = XkGameCtrl.GetInstance().GetRandAimPlayerObj();
                break;
            }
        }
        TargetObject = XKPlayerCamera.GetInstanceFeiJi().gameObject;
        //TargetObject = TestTarget; //test
    }
    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);
                //}
            }
        }
    }
예제 #17
0
    public void MakePlayerFlyToPathMark()
    {
        if (!XkGameCtrl.GetInstance().IsCartoonShootTest)
        {
            if (!IsStopMovePlayer)
            {
                Debug.Log("Unity:" + "MakePlayerFlyToPathMark -> player " + PlayerSt);
                return;
            }
        }

        Transform tran = null;

        if (AiPathScript == null)
        {
            switch (PlayerSt)
            {
            case PlayerTypeEnum.FeiJi:
                tran = XkGameCtrl.GetInstance().GmCamMark.transform;
                break;

            case PlayerTypeEnum.TanKe:
                //tran = XkGameCtrl.GetInstance().TanKePlayerMark.transform;
                break;
            }
            transform.position = tran.position;
            transform.rotation = tran.rotation;

            if (Network.peerType == NetworkPeerType.Server)
            {
                PlayerCamera.SetActiveCamera(true);
            }
            return;
        }

        tran = AiPathScript.transform.GetChild(MarkCount);
        switch (PlayerSt)
        {
        case PlayerTypeEnum.FeiJi:
            if (XKPlayerCamera.GetInstanceTanKe() != null)
            {
                XKPlayerCamera.GetInstanceTanKe().SetActiveCamera(true);
            }
            PlayerCamera.SetActiveCamera(true);
            PlayerTranFeiJi.position = tran.position;
            PlayerTranFeiJi.rotation = tran.rotation;
            break;

        case PlayerTypeEnum.TanKe:
            if (XKPlayerCamera.GetInstanceFeiJi() != null)
            {
                XKPlayerCamera.GetInstanceFeiJi().SetActiveCamera(true);
            }
            PlayerCamera.SetActiveCamera(true);
            PlayerTranTanKe.position = tran.position;
            PlayerTranTanKe.rotation = tran.rotation;
            break;

        case PlayerTypeEnum.CartoonCamera:
            transform.position = tran.position;
            transform.rotation = tran.rotation;
            break;
        }
    }
예제 #18
0
    // Use this for initialization
    void Start()
    {
        CameraObj    = gameObject;
        PlayerCamera = GetComponent <Camera>();
        if (PlayerCamera != null)
        {
            PlayerCamera.targetTexture = null;
        }

        if (PlayerMainCamTmp != null && PlayerMainCamTmp.Length >= 2)
        {
            PlayerMainCameraTmp = new Camera[2];
            if (PlayerMainCamTmp[0] != null)
            {
                PlayerMainCameraTmp[0] = PlayerMainCamTmp[0].GetComponent <Camera>();
//			    if (XkGameCtrl.GetInstance().IsOpenVR) {
//				    PlayerMainCamTmp[0].SetActive(false);
//			    }
            }

            if (PlayerMainCamTmp[1] != null)
            {
                PlayerMainCameraTmp[1] = PlayerMainCamTmp[1].GetComponent <Camera>();
//			    if (XkGameCtrl.GetInstance().IsOpenVR) {
//				    PlayerMainCamTmp[1].SetActive(false);
//			    }
            }
        }

        CameraTran   = transform;
        PlayerScript = GetComponentInParent <XkPlayerCtrl>();
        switch (PlayerScript.PlayerSt)
        {
        case PlayerTypeEnum.FeiJi:
            _InstanceFeiJi = this;
            PlayerSt       = PlayerTypeEnum.FeiJi;
            FeiJiCameraTan = transform;
            if (!XkGameCtrl.IsTiaoGuoStartCartoon)
            {
                CameraObj.SetActive(false);
            }
//			else {
//				CameraObj.SetActive(XkGameCtrl.GetInstance().IsOpenVR);
//			}
            break;

        case PlayerTypeEnum.TanKe:
            _InstanceTanKe = this;
            PlayerSt       = PlayerTypeEnum.TanKe;
            TanKeCameraTan = transform;
            CameraObj.SetActive(false);
            break;

        case PlayerTypeEnum.CartoonCamera:
            _InstanceCartoon = this;
            PlayerSt         = PlayerTypeEnum.CartoonCamera;
            if (XkGameCtrl.IsTiaoGuoStartCartoon)
            {
                CameraObj.SetActive(false);
            }
            break;
        }

        if (PlayerSt != PlayerTypeEnum.CartoonCamera)
        {
            XkGameCtrl.GetInstance().ChangeAudioListParent();
        }

        if (PlayerScript != null)
        {
            PlayerScript.SetPlayerCamera(this);
        }

        GameObject obj = new GameObject();

        obj.name                   = "CameraParent";
        CameraParent               = obj.transform;
        CameraParent.parent        = CameraTran.parent;
        CameraParent.localPosition = CameraTran.localPosition;
        CameraParent.rotation      = CameraTran.rotation;
        CameraTran.parent          = null;

        if (PlayerSt != PlayerTypeEnum.CartoonCamera)
        {
            if (!XkGameCtrl.IsTiaoGuoStartCartoon)
            {
                SetEnableCamera(false);
            }

            if (XkGameCtrl.IsActivePlayerOne)
            {
                IndexPlayerNum = -1;
                TestChangePlayerCamera();
            }
            else
            {
                IndexPlayerNum = 0;
                TestChangePlayerCamera();
            }
        }
        XKGlobalData.GetInstance().PlayGuanKaBeiJingAudio();
    }
예제 #19
0
    void AmmoGenZongDanUpdate()
    {
        if (Time.time > SpawnTime + LifeTime)
        {
            DestroyNpcAmmo(ObjAmmo);
            return;
        }

        bool isGenZong = false;

        if (TargetObject)
        {
            Vector3 targetPos = TargetObject.transform.position;
            float   cosVal    = 0f;
            Vector3 vecA      = AmmoTran.forward;
            Vector3 vecB      = targetPos - AmmoTran.position;
            vecB.y = vecA.y = 0f;
            cosVal = Vector3.Dot(vecA, vecB.normalized);
            if (cosVal > CosJiaoDuGZ)
            {
                isGenZong = true;
                //targetPos += transform.right * (Mathf.PingPong (Time.time, 1.0f) - 0.5f) * noise;
                Vector3 targetDirAmmo = (targetPos - AmmoTran.position);
                float   targetDist    = targetDirAmmo.magnitude;
                targetDirAmmo /= targetDist;

                DirAmmo            = Vector3.Slerp(DirAmmo, targetDirAmmo, Time.deltaTime * SeekPrecision);
                AmmoTran.rotation  = Quaternion.LookRotation(DirAmmo);
                AmmoTran.position += (DirAmmo * MvSpeed) * Time.deltaTime;
            }
        }

        if (!isGenZong)
        {
            AmmoTran.position += (AmmoTran.forward * MvSpeed) * Time.deltaTime;
        }

        // Check if this one hits something
        Collider[] hits     = Physics.OverlapSphere(AmmoTran.position, HitRadius, ~IgnoreLayers.value);
        bool       collided = false;

        foreach (Collider c in hits)
        {
            // Don't collide with triggers
            if (c.isTrigger)
            {
                continue;
            }

            XKPlayerCamera playerScript = c.GetComponent <XKPlayerCamera>();
            if (playerScript != null /* && !playerScript.GetIsWuDiState()*/)
            {
                XkGameCtrl.GetInstance().SubGamePlayerHealth(PlayerDamage, IndexPlayerAim);
            }
//			if (playerScript != null && !playerScript.GetIsWuDiState()) {
//				XkGameCtrl.GetInstance().SubGamePlayerHealth(playerScript.PlayerIndex, PlayerDamage);
//			}

            // Get the rigidbody if any
            if (c.GetComponent <Rigidbody>())
            {
                // Apply force to the target object
                Vector3 force = AmmoTran.forward * forceAmount;
                force.y = 0f;
                c.GetComponent <Rigidbody>().AddForce(force, ForceMode.Impulse);
            }
            collided = true;
        }

        if (collided)
        {
            if (AmmoExplode != null)
            {
                GameObject expObj = (GameObject)Instantiate(AmmoExplode, AmmoTran.position, AmmoTran.rotation);
                if (XkGameCtrl.NpcAmmoArray != null)
                {
                    expObj.transform.parent = XkGameCtrl.NpcAmmoArray;
                }
            }
            DestroyNpcAmmo(ObjAmmo);
        }
    }
예제 #20
0
    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 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);
            }
        }
    }
예제 #22
0
    void OnSreenAlphaToMax()
    {
        GameMode modeVal = XkGameCtrl.GameModeVal;

        Debug.Log("OnSreenAlphaToMax -> GameMode " + modeVal);

        bool isClearCartoonNpc = true;

        if (!XKTriggerOpenPlayerUI.IsActiveOpenPlayerUI)
        {
            XKPlayerCamera.GetInstanceCartoon().SetActiveCamera(false);
        }

        switch (modeVal)
        {
        case GameMode.DanJiFeiJi:
            XkPlayerCtrl.GetInstanceFeiJi().MakePlayerFlyToPathMark();
            break;

        case GameMode.DanJiTanKe:
            XkPlayerCtrl.GetInstanceTanKe().MakePlayerFlyToPathMark();
            break;

        case GameMode.LianJi:
            if (XkPlayerCtrl.GetInstanceFeiJi() != null)
            {
                XkPlayerCtrl.GetInstanceFeiJi().MakePlayerFlyToPathMark();
            }

            if (XkPlayerCtrl.GetInstanceTanKe() != null)
            {
                XkPlayerCtrl.GetInstanceTanKe().MakePlayerFlyToPathMark();
            }

            if (Network.peerType != NetworkPeerType.Disconnected)
            {
                isClearCartoonNpc = false;
            }

            if (Network.peerType == NetworkPeerType.Client)
            {
                NetCtrl.GetInstance().SendSetScreenDanHeiIsStartGame();
            }
            break;
        }
        DestroyObject(DanHeiTweenAlpha);
        DanHeiTweenAlpha         = ScreenDanHeiObj.AddComponent <TweenAlpha>();
        DanHeiTweenAlpha.enabled = false;
        DanHeiTweenAlpha.from    = 1f;
        DanHeiTweenAlpha.to      = 0f;
        EventDelegate.Add(DanHeiTweenAlpha.onFinished, delegate {
            Invoke("OnSreenAlphaToMin", 0.2f);
        });
        DanHeiTweenAlpha.enabled = true;
        DanHeiTweenAlpha.PlayForward();

        if (isClearCartoonNpc)
        {
            XkGameCtrl.ClearCartoonSpawnNpc();
        }

        if (Network.peerType != NetworkPeerType.Server)
        {
            IsStartGame = true;
        }
        Time.timeScale = 1.0f;
        switch (modeVal)
        {
        case GameMode.DanJiFeiJi:
            XkPlayerCtrl.GetInstanceFeiJi().RestartMovePlayer();
            break;

        case GameMode.DanJiTanKe:
            XkPlayerCtrl.GetInstanceTanKe().RestartMovePlayer();
            break;

        case GameMode.LianJi:
            if (Network.peerType != NetworkPeerType.Server)
            {
                if (Network.peerType != NetworkPeerType.Client)
                {
                    if (XkPlayerCtrl.GetInstanceFeiJi() != null)
                    {
                        XkPlayerCtrl.GetInstanceFeiJi().RestartMovePlayer();
                    }

                    if (XkPlayerCtrl.GetInstanceTanKe() != null)
                    {
                        XkPlayerCtrl.GetInstanceTanKe().RestartMovePlayer();
                    }
                    XKCameraMapCtrl.GetInstance().SetCameraMapState();                     //test
                }
                else
                {
                    //SendServerMovePlayer
                    NetCtrl.GetInstance().SetScreenDanHieStartMovePlayer();
                }
            }
            else
            {
                AddStartMovePlayerCount();
            }
            break;
        }
    }