public void OnCompelteRotFirePoint(int indexXiaoShuiJing)
 {
     if (DaShuiJingHealth.GetIsDeathNpc())
     {
         return;
     }
     StartCoroutine(CheckXiaoShuiJingFireState(indexXiaoShuiJing));
 }
Пример #2
0
    bool CheckAmmoHitObj(GameObject hitObjNpc, PlayerEnum playerIndex)
    {
//		BuJiBaoCtrl buJiBaoScript = hitObjNpc.GetComponent<BuJiBaoCtrl>();
//		if (buJiBaoScript != null) {
//			buJiBaoScript.RemoveBuJiBao(playerIndex); //buJiBaoScript
//			return;
//		}

        bool isStopCheckHit = false;

        if (AmmoType != PlayerAmmoType.PaiJiPaoAmmo)
        {
            XKPlayerCheckCamera checkCam = hitObjNpc.GetComponent <XKPlayerCheckCamera>();
            if (checkCam != null)
            {
                IsHitNpcAmmo = true;
                //SSDebug.LogWarning("MoveAmmoOnCompelteITween ============== 55555555555555555");
                MoveAmmoOnCompelteITween();
                return(true);
            }
        }

        XKNpcHealthCtrl healthScript = hitObjNpc.GetComponent <XKNpcHealthCtrl>();

        if (healthScript != null && !healthScript.GetIsDeathNpc())
        {
            /*Debug.Log("Unity:"+"CheckAmmoHitObj -> OnDamageNpc: "
             +"AmmoType "+AmmoType
             +", AmmoName "+AmmoTran.name
             +", NpcName "+healthScript.GetNpcName()
             +", AmmoDamageDis "+AmmoDamageDis);*/
            bool isHitNpc = false;
            switch (AmmoType)
            {
            case PlayerAmmoType.ChuanTouAmmo:
            case PlayerAmmoType.PaiJiPaoAmmo:
            {
                if (NpcHealthList == null)
                {
                    NpcHealthList = new List <XKNpcHealthCtrl>();
                }

                if (!NpcHealthList.Contains(healthScript))
                {
                    NpcHealthList.Add(healthScript);
                    isHitNpc = true;
                }
                break;
            }

            default:
            {
                IsHitNpcAmmo = true;
                //MoveAmmoOnCompelteITween();
                isStopCheckHit = true;
                isHitNpc       = true;
                break;
            }
            }

            if (isHitNpc)
            {
                int baoJiDamage = 0;
                if (AmmoType == PlayerAmmoType.ChuanTouAmmo ||
                    AmmoType == PlayerAmmoType.DaoDanAmmo ||
                    AmmoType == PlayerAmmoType.PaiJiPaoAmmo ||
                    AmmoType == PlayerAmmoType.SanDanAmmo ||
                    AmmoType == PlayerAmmoType.ChongJiBoAmmo)
                {
                    //获取玩家对代金券npc的暴击伤害.
                    XkGameCtrl.GetInstance().m_CaiPiaoHealthDt.CheckPlayerBaoJiDengJi(AmmoType, PlayerState, healthScript);
                    if (XkGameCtrl.GetInstance().m_CaiPiaoHealthDt != null && healthScript.GetIsDaiJinQuanNpc() == true)
                    {
                        baoJiDamage = XkGameCtrl.GetInstance().m_CaiPiaoHealthDt.GetBaoJiDamage(PlayerState);
                    }
                }

                //if (XkGameCtrl.GetInstance().m_CaiPiaoHealthDt != null && healthScript.GetIsDaiJinQuanNpc() == true)
                //{
                //    if (AmmoType == PlayerAmmoType.ChuanTouAmmo
                //        || AmmoType == PlayerAmmoType.DaoDanAmmo
                //        || AmmoType == PlayerAmmoType.PaiJiPaoAmmo
                //        || AmmoType == PlayerAmmoType.SanDanAmmo)
                //    {
                //        //获取玩家对代金券npc的暴击伤害.
                //        XkGameCtrl.GetInstance().m_CaiPiaoHealthDt.CheckPlayerBaoJiDengJi(AmmoType, PlayerState, healthScript);
                //        baoJiDamage = XkGameCtrl.GetInstance().m_CaiPiaoHealthDt.GetBaoJiDamage(PlayerState);
                //    }
                //}
                healthScript.OnDamageNpc(DamageNpc + baoJiDamage, PlayerState, AmmoType, IsAiFireAmmo);
                SpawnAmmoParticleObj(healthScript);
            }

            if (isStopCheckHit == true)
            {
                //停止子弹的伤害检测.
                if (AmmoType == PlayerAmmoType.ChongJiBoAmmo)
                {
                    //冲击波子弹不允许调用MoveAmmoOnCompelteITween.
                }
                else
                {
                    //SSDebug.LogWarning("MoveAmmoOnCompelteITween ============== 44444444444444444");
                    MoveAmmoOnCompelteITween();
                }
            }
        }

        if (hitObjNpc != null)
        {
            NpcAmmoCtrl npcAmmoScript = hitObjNpc.GetComponent <NpcAmmoCtrl>();
            if (npcAmmoScript != null)
            {
                npcAmmoScript.MoveAmmoOnCompelteITween();
            }

            if (AmmoType == PlayerAmmoType.DaoDanAmmo ||
                AmmoType == PlayerAmmoType.GaoBaoAmmo ||
                AmmoType == PlayerAmmoType.PuTongAmmo ||
                AmmoType == PlayerAmmoType.SanDanAmmo ||
                AmmoType == PlayerAmmoType.ChongJiBoAmmo)
            {
                if (hitObjNpc.layer != LayerMask.NameToLayer("Default"))
                {
                    //SSDebug.Log("hitObjNpc ===================================== " + hitObjNpc.name);
                    IsHitNpcAmmo = true;
                    if (AmmoType == PlayerAmmoType.ChongJiBoAmmo)
                    {
                        //冲击波子弹不允许在这里调用MoveAmmoOnCompelteITween,否则会被瞬间删除.
                    }
                    else
                    {
                        //SSDebug.LogWarning("MoveAmmoOnCompelteITween ============== 333333333333333");
                        MoveAmmoOnCompelteITween();
                    }
                    isStopCheckHit = true;
                }
            }
        }
        return(isStopCheckHit);
    }
    bool CheckAmmoHitObj(GameObject hitObjNpc, PlayerEnum playerIndex)
    {
//		BuJiBaoCtrl buJiBaoScript = hitObjNpc.GetComponent<BuJiBaoCtrl>();
//		if (buJiBaoScript != null) {
//			buJiBaoScript.RemoveBuJiBao(playerIndex); //buJiBaoScript
//			return;
//		}

        bool isStopCheckHit = false;

        if (AmmoType != PlayerAmmoType.PaiJiPaoAmmo)
        {
            XKPlayerCheckCamera checkCam = hitObjNpc.GetComponent <XKPlayerCheckCamera>();
            if (checkCam != null)
            {
                MoveAmmoOnCompelteITween();
                return(true);
            }
        }

        XKNpcHealthCtrl healthScript = hitObjNpc.GetComponent <XKNpcHealthCtrl>();

        if (healthScript != null && !healthScript.GetIsDeathNpc())
        {
            /*Debug.Log("CheckAmmoHitObj -> OnDamageNpc: "
             +"AmmoType "+AmmoType
             +", AmmoName "+AmmoTran.name
             +", NpcName "+healthScript.GetNpcName()
             +", AmmoDamageDis "+AmmoDamageDis);*/
            bool isHitNpc = false;
            switch (AmmoType)
            {
            case PlayerAmmoType.ChuanTouAmmo:
            case PlayerAmmoType.PaiJiPaoAmmo:
                if (NpcHealthList == null)
                {
                    NpcHealthList = new List <XKNpcHealthCtrl>();
                }

                if (!NpcHealthList.Contains(healthScript))
                {
                    NpcHealthList.Add(healthScript);
                    isHitNpc = true;
                }
                break;

            default:
                MoveAmmoOnCompelteITween();
                isStopCheckHit = true;
                isHitNpc       = true;
                break;
            }

            if (isHitNpc)
            {
                healthScript.OnDamageNpc(DamageNpc, PlayerState, AmmoType);
                SpawnAmmoParticleObj();
            }
        }

        if (hitObjNpc != null)
        {
            NpcAmmoCtrl npcAmmoScript = hitObjNpc.GetComponent <NpcAmmoCtrl>();
            if (npcAmmoScript != null)
            {
                npcAmmoScript.MoveAmmoOnCompelteITween();
            }

            if (AmmoType == PlayerAmmoType.DaoDanAmmo ||
                AmmoType == PlayerAmmoType.GaoBaoAmmo ||
                AmmoType == PlayerAmmoType.PuTongAmmo ||
                AmmoType == PlayerAmmoType.SanDanAmmo)
            {
                if (hitObjNpc.layer != LayerMask.NameToLayer("Default"))
                {
                    MoveAmmoOnCompelteITween();
                    isStopCheckHit = true;
                }
            }
        }
        return(isStopCheckHit);
    }
Пример #4
0
    void CheckPlayerTwoFireBt()
    {
        if (XKPlayerCamera.IndexPlayerNum != 1)
        {
            SetQianGuanTwRot(PlayerEnum.PlayerTwo, false);
            return;
        }

        if (!ScreenDanHeiCtrl.IsStartGame)
        {
            SetQianGuanTwRot(PlayerEnum.PlayerTwo, false);
            return;
        }

        if (!XkGameCtrl.IsActivePlayerTwo)
        {
            SetQianGuanTwRot(PlayerEnum.PlayerTwo, false);
            return;
        }

        if (!IsActiveFireBtTwo)
        {
            SetQianGuanTwRot(PlayerEnum.PlayerTwo, false);
            return;
        }
        SetQianGuanTwRot(PlayerEnum.PlayerTwo, true);

//		if (DaoJiShiCtrl.GetInstance().GetIsPlayDaoJishi()) {
//			return;
//		}

        if (!XkGameCtrl.IsTiaoGuoStartCartoon)
        {
            if (!ZhunXingCtrl.GetInstanceTwo().GetActiveZhunXing() || !ZhunXingTeXiaoCtrl.IsOverTeXiaoZhunXing)
            {
                return;
            }
        }

        if (Camera.main == null)
        {
            return;
        }

//		if (GameOverCtrl.IsShowGameOver || JiFenJieMianCtrl.GetInstance().GetIsShowFinishTask()) {
//			IsActiveFireBtTwo = false;
//			return;
//		}

//		if (PlayerStEnum == PlayerTypeEnum.FeiJi && XkGameCtrl.GameJiTaiSt != GameJiTaiType.FeiJiJiTai) {
//			IsActiveFireBtTwo = false;
//			return;
//		}

//		if (PlayerStEnum == PlayerTypeEnum.TanKe && XkGameCtrl.GameJiTaiSt != GameJiTaiType.TanKeJiTai) {
//			IsActiveFireBtTwo = false;
//			return;
//		}

        if (XkGameCtrl.GaoBaoDanNumPTwo <= 0 &&
            Time.time < LastFireTimeTwo + 1f / Frequency)
        {
            return;
        }

        if (XkGameCtrl.GaoBaoDanNumPTwo > 0 &&
            Time.time < LastFireTimeTwo + 1f / FrequencyGaoBao)
        {
            return;
        }
        LastFireTimeTwo = Time.time;
        Vector3    ammoSpawnPos = AmmoStartPosTwo[0].position;
        GameObject obj          = null;

        CheckFireAudioPlayerTwo();

        bool isSpawnGaoBaoDan = false;

        if (XkGameCtrl.GaoBaoDanNumPTwo <= 0)
        {
            if (AmmoParticle[0] != null)
            {
                obj = SpawnParticleCom.SpawnParticleObject(AmmoParticle[0], ammoSpawnPos, AmmoStartPosTwo[0].rotation);
                obj.transform.parent = AmmoStartPosTwo[0];
            }
            obj = GetPlayerAmmo(PlayerAmmoType.PuTongAmmo, ammoSpawnPos, AmmoStartPosTwo[0].rotation);
        }
        else
        {
            isSpawnGaoBaoDan = true;
            if (GaoBaoAmmoParticle[0] != null)
            {
                obj = SpawnParticleCom.SpawnParticleObject(GaoBaoAmmoParticle[0], ammoSpawnPos, AmmoStartPosTwo[0].rotation);
                obj.transform.parent = AmmoStartPosTwo[0];
            }
            XkGameCtrl.GetInstance().SubGaoBaoDanNumPTwo();
            obj = GetPlayerAmmo(PlayerAmmoType.GaoBaoAmmo, ammoSpawnPos, AmmoStartPosTwo[0].rotation);
        }
        obj.transform.parent = XkGameCtrl.PlayerAmmoArray;
        PlayerAmmoCtrl ammoScript = obj.GetComponent <PlayerAmmoCtrl>();

        ammoScript.SetIsDonotHurtNpc(false);

        Vector3    mousePosInput = pcvr.GetPlayerMousePos(PlayerEnum.PlayerTwo);
        Vector3    firePos       = Vector3.zero;
        Vector3    mousePos      = mousePosInput + Vector3.forward * OffsetForward;
        Vector3    posTmp        = Camera.main.ScreenToWorldPoint(mousePos);
        Vector3    ammoForward   = Vector3.Normalize(posTmp - ammoSpawnPos);
        Ray        ray           = Camera.main.ScreenPointToRay(mousePosInput);
        RaycastHit hit;

        if (!IsPSAutoFire)
        {
            //firePos = FirePosValTmp * ammoForward + ammoSpawnPos;
            if (Physics.Raycast(ray, out hit, FireRayDirLen, FireLayer.value))
            {
                //Debug.Log("Player fire obj -> "+hit.collider.name);
                //firePos = hit.point;
                if (ammoScript.AmmoType == PlayerAmmoType.PuTongAmmo)
                {
                    XKNpcHealthCtrl healthScript = hit.collider.GetComponent <XKNpcHealthCtrl>();
                    if (healthScript != null && !healthScript.GetIsDeathNpc())
                    {
                        healthScript.OnDamageNpc(ammoScript.AmmoType, PlayerEnum.PlayerTwo);
                    }
                }

                BuJiBaoCtrl buJiBaoScript = hit.collider.GetComponent <BuJiBaoCtrl>();
                if (buJiBaoScript != null)
                {
                    buJiBaoScript.RemoveBuJiBao(PlayerEnum.PlayerTwo);                     //buJiBaoScript
                }
            }
            firePos = GunLaser[1].PlayerCursorTr.position;
        }
        else
        {
            ammoForward = obj.transform.forward;
            firePos     = FirePosValTmp * ammoForward + ammoSpawnPos;
            if (Physics.Raycast(ammoSpawnPos, ammoForward, out hit, FireRayDirLen, FireLayer.value))
            {
                //Debug.Log("Player fire obj -> "+hit.collider.name);
                firePos = hit.point;
                if (ammoScript.AmmoType == PlayerAmmoType.PuTongAmmo)
                {
                    XKNpcHealthCtrl healthScript = hit.collider.GetComponent <XKNpcHealthCtrl>();
                    if (healthScript != null && !healthScript.GetIsDeathNpc())
                    {
                        healthScript.OnDamageNpc(ammoScript.AmmoType, PlayerEnum.PlayerTwo);
                    }
                }

                BuJiBaoCtrl buJiBaoScript = hit.collider.GetComponent <BuJiBaoCtrl>();
                if (buJiBaoScript != null)
                {
                    buJiBaoScript.RemoveBuJiBao(PlayerEnum.PlayerTwo);                     //buJiBaoScript
                }
            }
        }

        if (hit.collider == null)
        {
            ammoScript.StartMoveAmmo(firePos, PlayerEnum.PlayerTwo);
        }
        else
        {
            ammoScript.StartMoveAmmo(firePos, PlayerEnum.PlayerTwo, null, hit.collider.gameObject);
        }

        if (isSpawnGaoBaoDan)
        {
            //Call OtherPort Show AmmoParticle
            PlayerScript.CallOtherPortSpawnPlayerAmmoParticle(2, 2, firePos);
        }
        else
        {
            //Call OtherPort Show AmmoParticle
            PlayerScript.CallOtherPortSpawnPlayerAmmoParticle(2, 0, firePos);
        }
    }