Пример #1
0
 // Use this for initialization
 void Start()
 {
     PlayerAutoFireCom = GetComponent <XKPlayerAutoFire>();
     for (int i = 0; i < AudioRot.Length; i++)
     {
         AudioRot[i].loop = true;
     }
 }
Пример #2
0
    //bool IsXiaoFeiJiAmmo = false;
    //internal void SetIsXiaoFeiJiAmmo(bool isXiaoFeiJiAmmo)
    //{
    //    IsXiaoFeiJiAmmo = isXiaoFeiJiAmmo;
    //}

    //static int TestChongJiBoCount = 0;
    public void StartMoveAmmo(Vector3 firePos,
                              PlayerEnum playerIndex,
                              XKPlayerAutoFire autoFireCom = null,
                              NpcPathCtrl ammoMovePath     = null,
                              GameObject hitObjNpc         = null)
    {
        if (XkGameCtrl.GetInstance().m_GamePlayerAiData.IsActiveAiPlayer == true)
        {
            //没有激活任何玩家.
            SetIsAiFireAmmo(true);
        }
        else
        {
            SetIsAiFireAmmo(false);
        }

        float   disTmp = Vector3.Distance(firePos, AmmoTran.position);
        Vector3 vecA   = firePos - AmmoTran.position;

        if (disTmp < 10f ||
            disTmp > MaxDisVal ||
            AmmoType == PlayerAmmoType.PaiJiPaoAmmo)
        {
            firePos = AmmoTran.position + (vecA.normalized * MaxDisVal);
            //Debug.Log("Unity:"+"StartMoveAmmo::fix firePos -> "+"disTmp "+disTmp+", disMax "+MaxDisVal);
        }
        IsChuanJiaDanHitCamColForward = false;
        IsCreatAmmoParticle           = false;

        m_TimeLast = Time.time;
        ObjAmmo    = gameObject;
        if (IsDestroyAmmo == true)
        {
            ObjAmmo.SetActive(true);
            IsDestroyAmmo = false;
            IsHitNpcAmmo  = false;
        }

        AmmoTran    = transform;
        PlayerState = playerIndex;
        if (AmmoType == PlayerAmmoType.ChongJiBoAmmo)
        {
            //冲击波子弹不用运动,只需要检测一次范围伤害.
            if (m_AmmmoData != null && autoFireCom != null)
            {
                m_AmmmoData.SetActiveAmmoCore(autoFireCom.CountAmmoStateZhuPao, autoFireCom.PlayerIndex);
            }
            CheckPlayerAmmoForwardHitNpc();
            //StartCoroutine(DelayRemoveChongJiBoAmmo());
            //TestChongJiBoCount++;
            //SSDebug.LogWarning("TestChongJiBoCount ============== " + TestChongJiBoCount + ", AmmoActive == " + gameObject.activeInHierarchy);
        }
        else
        {
            MoveAmmoByItween(firePos, ammoMovePath, autoFireCom);
        }
        IsHandleRpc = true;
    }
 // Use this for initialization
 public void Init(XKPlayerAutoFire playerWeapon, Transform followTr)
 {
     //Debug.Log("Unity: SSPlayerXiaoFeiJi.Init...............");
     m_PlayerIndex = playerWeapon.PlayerIndex;
     m_FireLayer   = playerWeapon.FireLayer;
     m_FollowPoint = followTr;
     transform.SetParent(XkGameCtrl.MissionCleanup);
     gameObject.SetActive(false);
 }
 // Use this for initialization
 void Start()
 {
     IndexVal = (byte)((byte)IndexPlayer - 1);
     if (IndexVal >= 0 && IndexVal <= 1)
     {
         XKPlayerAutoFire playerAutoFire = XkPlayerCtrl.GetInstanceFeiJi().GetPlayerAutoFireScript();
         CameraMain = playerAutoFire.GunCamera[IndexVal];
     }
 }
Пример #5
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();
    }
Пример #6
0
        /// <summary>
        /// 创建粒子特效.
        /// </summary>
        internal void CreatLiZiTeXiao(int index, XKPlayerAutoFire autoFireCom, Transform tr)
        {
            //SSDebug.Log("CreatLiZiTeXiao -> index ================ " + index);
            if (index < 0 || index >= LiZiPrefabArray.Length)
            {
                return;
            }

            GameObject prefab = LiZiPrefabArray[index];

            if (prefab && autoFireCom != null)
            {
                autoFireCom.Instantiate(prefab, XkGameCtrl.MissionCleanup, tr);
            }
        }
Пример #7
0
    // Use this for initialization
    void Start()
    {
        PcvrComState tankPMState = XkGameCtrl.GetInstance().GameTKPMState;

        if (tankPMState != PcvrComState.TanKeGame2Ping)
        {
            return;
        }

        XKPlayerAutoFire fireScript = GetComponent <XKPlayerAutoFire>();

        fireScript.AmmoStartPosOne[0] = AmmoStartPos[0];
        fireScript.AmmoStartPosTwo[0] = AmmoStartPos[0];
        fireScript.DaoDanAmmoPosOne   = DaoDanAmmoPos;
        fireScript.DaoDanAmmoPosTwo   = DaoDanAmmoPos;
    }
 public void CreatFeiJiAmmo(XKPlayerAutoFire autoFireCom)
 {
     if (m_WeaponData != null)
     {
         if (m_WeaponData.AmmoPrefab != null)
         {
             int length = m_WeaponData.AmmoCreatPoints.Length;
             for (int i = 0; i < length; i++)
             {
                 SpawnJiQiangAmmo(i, autoFireCom);
             }
         }
         else
         {
             Debug.LogWarning("Unity: CreatFeiJiAmmo -> AmmoPrefab was null...");
         }
     }
 }
Пример #9
0
	public void SetIsSanDanZPFire(bool isFire)
	{
		if (IsSanDanZPFire == isFire) {
			return;
		}
		IsSanDanZPFire = isFire;
		ChangePlayerPaoTaObj(isFire == true ? PlayerAmmoType.SanDanAmmo : PlayerAmmoType.Null);
		PlayerAmmoType ammoTypeVal = isFire == true ? PlayerAmmoType.SanDanAmmo : PlayerAmmoType.DaoDanAmmo;
		XKPlayerAutoFire.GetInstanceAutoFire(PlayerIndex).SetAmmoStateZhuPao(ammoTypeVal);
		//Debug.Log("Unity:"+"SetIsSanDanZPFire -> isFire "+isFire);

		BuJiBaoType daoJuTypeVal = isFire == true ? BuJiBaoType.ZhuPaoSanDanDJ : BuJiBaoType.DaoDan;
		ZhuPaoAmmoSt = daoJuTypeVal;
		if (isFire) {
			//IsSanDanZPFire = false;
			IsPaiJiPaoFire = false;
		}
	}
Пример #10
0
	public static XKPlayerAutoFire GetInstanceAutoFire(PlayerEnum indexPlayer)
	{
		XKPlayerAutoFire fireScript = null;
		switch (indexPlayer) {
		case PlayerEnum.PlayerOne:
			fireScript = _InstanceOne; 
			break;
		case PlayerEnum.PlayerTwo:
			fireScript = _InstanceTwo; 
			break;
		case PlayerEnum.PlayerThree:
			fireScript = _InstanceThree; 
			break;
		case PlayerEnum.PlayerFour:
			fireScript = _InstanceFour; 
			break;
		}
		return fireScript;
	}
    void SpawnJiQiangAmmo(int indexVal, XKPlayerAutoFire autoFireCom)
    {
        if (m_WeaponData.AmmoCreatPoints == null)
        {
            return;
        }

        Vector3    ammoSpawnForward = m_WeaponData.AmmoCreatPoints[indexVal].forward;
        Vector3    ammoSpawnPos     = m_WeaponData.AmmoCreatPoints[indexVal].position;
        Quaternion ammoSpawnRot     = m_WeaponData.AmmoCreatPoints[indexVal].rotation;
        GameObject obj = GetFeiJiAmmo(ammoSpawnPos, ammoSpawnRot);

        if (obj == null)
        {
            return;
        }
        PlayerAmmoCtrl ammoScript = obj.GetComponent <PlayerAmmoCtrl>();

        //float OffsetForward = 30f;
        float firePosValTmp = 100f;
        float fireRayDirLen = 100f;
        //Vector3 mousePosInput = Input.mousePosition;
        RaycastHit hit;
        Vector3    firePos = Vector3.zero;

        //Vector3 mousePos = mousePosInput + Vector3.forward * OffsetForward;
        //Vector3 posTmp = Camera.main.ScreenToWorldPoint(mousePos);
        //Vector3 ammoForward = Vector3.Normalize(posTmp - ammoSpawnPos);
        firePos       = firePosValTmp * ammoSpawnForward + ammoSpawnPos;
        fireRayDirLen = ammoScript.MvSpeed * ammoScript.LiveTime;
        if (Physics.Raycast(ammoSpawnPos, ammoSpawnForward, out hit, fireRayDirLen, m_FireLayer.value))
        {
            if (ammoScript.AmmoType != PlayerAmmoType.ChuanTouAmmo)
            {
                firePos = hit.point;
            }
        }
        ammoScript.StartMoveAmmo(firePos, m_PlayerIndex, autoFireCom);
    }
Пример #12
0
	void Awake()
	{
		PlayerMoveScript = GetComponent<XKPlayerMoveCtrl>();
		if (PlayerMoveScript != null) {
			PlayerIndex = PlayerMoveScript.PlayerIndex;
		}

		switch (PlayerIndex) {
		case PlayerEnum.PlayerOne:
			_InstanceOne = this; 
			break;
		case PlayerEnum.PlayerTwo:
			_InstanceTwo = this; 
			break;
		case PlayerEnum.PlayerThree:
			_InstanceThree = this; 
			break;
		case PlayerEnum.PlayerFour:
			_InstanceFour = this; 
			break;
		}
		ChangePlayerPaoTaObj(PlayerAmmoType.Null);
	}
Пример #13
0
    public void SetPlayerAutoFireScript(XKPlayerAutoFire script)
    {
//		PlayerAutoFireScript = script;
    }
Пример #14
0
    /// <summary>
    /// Removes the bu ji bao. playerSt == 0 -> hit TerrainLayer,
    /// playerSt == 1 -> PlayerOne, playerSt == 2 -> PlayerTwo.
    /// playerSt == 3 -> PlayerThree, playerSt == 4 -> PlayerFour.
    /// </summary>
    /// <param name="key">Key.</param>
    public void RemoveBuJiBao(PlayerEnum playerSt, int keyHit = 0)
    {
        if (IsDeath)
        {
            return;
        }
        IsDeath = true;
        CancelInvoke("DelayDestroyBuJiBao");
        if (playerSt != PlayerEnum.Null || keyHit == 1)
        {
            //XKGlobalData.GetInstance().PlayAudioHitBuJiBao();
            if (ExplodeObj != null)
            {
                GameObject obj = (GameObject)Instantiate(ExplodeObj, transform.position, transform.rotation);
                XkGameCtrl.CheckObjDestroyThisTimed(obj);
            }

            if (Network.peerType != NetworkPeerType.Server)
            {
                bool isMoveDaoJu = true;
                switch (BuJiBao)
                {
                case BuJiBaoType.FenShuDJ:
                    isMoveDaoJu = false;
                    XKPlayerFenShuCtrl.GetInstance().ShowPlayerFenShu(playerSt, FenShuVal);
                    break;

                case BuJiBaoType.JiSuDJ:
                    //isMoveDaoJu = false;
                    XKPlayerMoveCtrl.SetPlayerJiSuMoveSpeed(playerSt);
                    XKPlayerMoveCtrl.SetPlayerJiSuState(playerSt);
                    XKPlayerJiSuCtrl.GetInstance().ShowPlayerJiSu(playerSt);
                    break;

                case BuJiBaoType.YiLiaoBaoDJ:
                    isMoveDaoJu = false;
                    XkGameCtrl.AddPlayerHealth(playerSt, XKDaoJuGlobalDt.GetInstance().YiLiaoBaoXueLiangVal);
                    XKPlayerJiJiuBaoCtrl.GetInstance().ShowPlayerJiJiuBao(playerSt);
                    break;

                case BuJiBaoType.ShuangBeiFenShuDJ:
                    //isMoveDaoJu = false;
                    //XKDaoJuGlobalDt.SetTimeFenShuBeiLv(playerSt, FenShuBeiLv);
                    XKDaoJuGlobalDt.SetTimeFenShuBeiLv(playerSt, 2);
                    XKFenShuBeiLvCtrl.GetInstance().ShowPlayerFenShuBeiLv(playerSt);
                    break;

                case BuJiBaoType.QianHouFireDJ:
                    isMoveDaoJu = false;
                    XKDaoJuGlobalDt.SetPlayerQianHouFire(playerSt);
                    break;

                case BuJiBaoType.ChangChengJiQiang:
                    isMoveDaoJu = false;
                    XKDaoJuGlobalDt.SetPlayerChangChengFire(playerSt);
                    break;

                case BuJiBaoType.SanDanJiQiang:
                    isMoveDaoJu = false;
                    XKDaoJuGlobalDt.SetPlayerJiQiangSanDanFire(playerSt);
                    break;

                case BuJiBaoType.QiangJiJiQiang:
                    isMoveDaoJu = false;
                    XKDaoJuGlobalDt.SetPlayerQiangJiFire(playerSt);
                    break;

                case BuJiBaoType.PaiJiPaoDJ:
                    isMoveDaoJu = false;
                    XKDaoJuGlobalDt.SetPlayerIsPaiJiPaoFire(playerSt);
                    break;

                case BuJiBaoType.ZhuPaoSanDanDJ:
                    isMoveDaoJu = false;
                    XKDaoJuGlobalDt.SetPlayerIsSanDanZPFire(playerSt);
                    break;

                case BuJiBaoType.HuoLiAllOpenDJ:
                    //isMoveDaoJu = false;
                    XKDaoJuGlobalDt.SetPlayerIsHuoLiAllOpen(playerSt);
                    XKPlayerHuoLiAllOpenCtrl.GetInstance().ShowPlayerHuoLiOpen(playerSt);
                    break;

                case BuJiBaoType.ChuanTouDan:
                    isMoveDaoJu = false;
                    XKPlayerAutoFire.GetInstanceAutoFire(playerSt).SetAmmoStateZhuPao(PlayerAmmoType.ChuanTouAmmo);
                    break;

                case BuJiBaoType.DaoDan:
                case BuJiBaoType.GaoBaoDan:
                case BuJiBaoType.SanDan:
                case BuJiBaoType.GenZongDan:
                case BuJiBaoType.JianSuDan:
                case BuJiBaoType.NLHuDun:
                    isMoveDaoJu = false;
                    break;
                }

                if (isMoveDaoJu)
                {
                    DaoJuCtrl.GetInstance().MoveDaoJuObjToPlayer(playerSt, transform);
                }
            }
        }
        DestroyNetObj(gameObject);
    }
    /// <summary>
    /// Removes the bu ji bao. playerSt == 0 -> hit TerrainLayer,
    /// playerSt == 1 -> PlayerOne, playerSt == 2 -> PlayerTwo.
    /// playerSt == 3 -> PlayerThree, playerSt == 4 -> PlayerFour.
    /// </summary>
    /// <param name="key">Key.</param>
    public void RemoveBuJiBao(PlayerEnum playerSt, int keyHit = 0)
    {
        if (IsDeath)
        {
            return;
        }
        IsDeath = true;
        CancelInvoke("DelayDestroyBuJiBao");
        if (playerSt != PlayerEnum.Null || keyHit == 1)
        {
            //XKGlobalData.GetInstance().PlayAudioHitBuJiBao();
            if (ExplodeObj != null)
            {
                GameObject obj = (GameObject)Instantiate(ExplodeObj, transform.position, transform.rotation);
                if (obj != null)
                {
                    obj.transform.SetParent(XkGameCtrl.PlayerAmmoArray);
                }

                XkGameCtrl.CheckObjDestroyThisTimed(obj);
                if (obj != null && IsCaiPiaoDaoJu)
                {
                    if (XkPlayerCtrl.GetInstanceFeiJi().m_SpawnNpcManage.m_CaiPiaoDataManage != null)
                    {
                        int value = XkPlayerCtrl.GetInstanceFeiJi().m_SpawnNpcManage.m_CaiPiaoDataManage.m_GameCaiPiaoData.GetPrintCaiPiaoValueByDeCaiState(SSCaiPiaoDataManage.GameCaiPiaoData.DeCaiState.SuiJiDaoJu, DaoJuType);
                        SSCaiPiaoLiZiManage caiPiaoLiZi = obj.GetComponent <SSCaiPiaoLiZiManage>();
                        if (caiPiaoLiZi != null)
                        {
                            caiPiaoLiZi.ShowNumUI(value, playerSt);
                        }
                        else
                        {
                            Debug.LogWarning("CreatLiZi -> caiPiaoLiZi was null.................");
                        }
                    }

                    if (XkGameCtrl.GetInstance().m_CaiPiaoFlyData != null)
                    {
                        //初始化飞出的彩票逻辑.
                        XkGameCtrl.GetInstance().m_CaiPiaoFlyData.InitCaiPiaoFly(obj.transform.position, playerSt, SSCaiPiaoDataManage.GameCaiPiaoData.DeCaiState.SuiJiDaoJu);
                    }
                    else
                    {
                        Debug.LogWarning("CreatLiZi -> m_CaiPiaoFlyData was null............");
                    }
                }
            }

            if (Network.peerType != NetworkPeerType.Server)
            {
                bool isMoveDaoJu = true;
                switch (BuJiBao)
                {
                case BuJiBaoType.FenShuDJ:
                    isMoveDaoJu = false;
                    XKPlayerFenShuCtrl.GetInstance().ShowPlayerFenShu(playerSt, FenShuVal);
                    break;

                case BuJiBaoType.JiSuDJ:
                    //isMoveDaoJu = false;
                    XKPlayerMoveCtrl.SetPlayerJiSuMoveSpeed(playerSt);
                    XKPlayerMoveCtrl.SetPlayerJiSuState(playerSt);
                    XKPlayerJiSuCtrl.GetInstance().ShowPlayerJiSu(playerSt);
                    break;

                case BuJiBaoType.YiLiaoBaoDJ:
                    isMoveDaoJu = false;
                    XkGameCtrl.AddPlayerHealth(playerSt, XKDaoJuGlobalDt.GetInstance().YiLiaoBaoXueLiangVal);
                    XKPlayerJiJiuBaoCtrl.GetInstance().ShowPlayerJiJiuBao(playerSt);
                    break;

                case BuJiBaoType.ShuangBeiFenShuDJ:
                    isMoveDaoJu = false;
                    //XKDaoJuGlobalDt.SetTimeFenShuBeiLv(playerSt, FenShuBeiLv);
                    //XKDaoJuGlobalDt.SetTimeFenShuBeiLv(playerSt, 2);
                    //XKFenShuBeiLvCtrl.GetInstance().ShowPlayerFenShuBeiLv(playerSt);
                    break;

                case BuJiBaoType.QianHouFireDJ:
                    isMoveDaoJu = false;
                    XKDaoJuGlobalDt.SetPlayerQianHouFire(playerSt);
                    break;

                case BuJiBaoType.ChangChengJiQiang:
                    isMoveDaoJu = false;
                    XKDaoJuGlobalDt.SetPlayerChangChengFire(playerSt);
                    break;

                case BuJiBaoType.SanDanJiQiang:
                    isMoveDaoJu = false;
                    XKDaoJuGlobalDt.SetPlayerJiQiangSanDanFire(playerSt);
                    break;

                case BuJiBaoType.QiangJiJiQiang:
                    isMoveDaoJu = false;
                    XKDaoJuGlobalDt.SetPlayerQiangJiFire(playerSt);
                    break;

                case BuJiBaoType.PaiJiPaoDJ:
                    isMoveDaoJu = false;
                    XKDaoJuGlobalDt.SetPlayerIsPaiJiPaoFire(playerSt);
                    break;

                case BuJiBaoType.ZhuPaoSanDanDJ:
                    isMoveDaoJu = false;
                    XKDaoJuGlobalDt.SetPlayerIsSanDanZPFire(playerSt);
                    break;

                case BuJiBaoType.HuoLiAllOpenDJ:
                    //isMoveDaoJu = false;
                    XKDaoJuGlobalDt.SetPlayerIsHuoLiAllOpen(playerSt);
                    XKPlayerHuoLiAllOpenCtrl.GetInstance().ShowPlayerHuoLiOpen(playerSt);
                    break;

                case BuJiBaoType.ChuanTouDan:
                    isMoveDaoJu = false;
                    XKPlayerAutoFire.GetInstanceAutoFire(playerSt).SetAmmoStateZhuPao(PlayerAmmoType.ChuanTouAmmo);
                    break;

                case BuJiBaoType.DaoDan:
                case BuJiBaoType.GaoBaoDan:
                case BuJiBaoType.SanDan:
                case BuJiBaoType.GenZongDan:
                case BuJiBaoType.JianSuDan:
                case BuJiBaoType.NLHuDun:
                    isMoveDaoJu = false;
                    break;
                }

                if (isMoveDaoJu)
                {
                    DaoJuCtrl.GetInstance().MoveDaoJuObjToPlayer(playerSt, transform);
                }
            }
        }
        DestroyNetObj(gameObject);
    }
Пример #16
0
    void MoveAmmoByItween(Vector3 firePos, NpcPathCtrl ammoMovePath, XKPlayerAutoFire autoFireCom)
    {
        //if (autoFireCom != null)
        //{
        //    SSDebug.Log("MoveAmmoByItween -> AmmoType ==== " + AmmoType + ", IsQianHouFire ==== " + autoFireCom.IsQianHouFire);
        //    SSDebug.Log("MoveAmmoByItween -> CountAmmoStateZhuPao ==== " + autoFireCom.CountAmmoStateZhuPao
        //        + ", CountAmmoStateJiQiang ==== " + autoFireCom.CountAmmoStateJiQiang);
        //}

        if (m_AmmmoData != null && autoFireCom != null)
        {
            switch (AmmoType)
            {
            case PlayerAmmoType.PaiJiPaoAmmo:
            case PlayerAmmoType.ChuanTouAmmo:
            case PlayerAmmoType.SanDanAmmo:
            case PlayerAmmoType.ChongJiBoAmmo:
            case PlayerAmmoType.DaoDanAmmo:
            {
                if (AmmoType == PlayerAmmoType.DaoDanAmmo)
                {
                    //普通导弹子弹.
                    m_AmmmoData.SetActiveAmmoCore(0, autoFireCom.PlayerIndex);
                }
                else
                {
                    //其它特殊导弹.
                    m_AmmmoData.SetActiveAmmoCore(autoFireCom.CountAmmoStateZhuPao, autoFireCom.PlayerIndex);
                }
                break;
            }

            case PlayerAmmoType.PuTongAmmo:
            {
                if (autoFireCom.IsQianHouFire == true)
                {
                    //小飞机发射的子弹.
                    m_AmmmoData.SetActiveAmmoCore(autoFireCom.CountAmmoStateJiQiang, autoFireCom.PlayerIndex);
                }
                break;
            }
            }
        }

        if (ammoMovePath == null)
        {
            Vector3[] posArray = new Vector3[2];
            posArray[0] = AmmoTran.position;
            float lobTime = Vector3.Distance(firePos, posArray[0]) / MvSpeed;
            if (AmmoType == PlayerAmmoType.GenZongAmmo ||
                AmmoType == PlayerAmmoType.PaiJiPaoAmmo)
            {
                Vector3 posTmp = AmmoType == PlayerAmmoType.GenZongAmmo ? GetGenZongDanFirePos() : firePos;
                if (posTmp != Vector3.zero)
                {
                    firePos = posTmp;
                }

                if (AmmoType == PlayerAmmoType.PaiJiPaoAmmo)
                {
                    RaycastHit hit;
                    Vector3    posA = firePos + Vector3.up * 50f;
                    Physics.Raycast(posA, Vector3.down, out hit, 500f, XkGameCtrl.GetInstance().LandLayer);
                    if (hit.collider != null)
                    {
                        firePos = hit.point;
                    }
                }

                if (AmmoType == PlayerAmmoType.PaiJiPaoAmmo && PaiJiPaoTiShiPrefab != null)
                {
                    PaiJiPaoTiShi = (GameObject)Instantiate(PaiJiPaoTiShiPrefab, firePos, Quaternion.identity);
                    if (XkGameCtrl.NpcAmmoArray != null)
                    {
                        PaiJiPaoTiShi.transform.parent = XkGameCtrl.NpcAmmoArray;
                    }

                    if (PaiJiPaoTiShi != null)
                    {
                        //迫击炮子弹提示.
                        SSPlayerAmmoTiShiData ammoTiShiDt = PaiJiPaoTiShi.GetComponent <SSPlayerAmmoTiShiData>();
                        if (ammoTiShiDt != null)
                        {
                            ammoTiShiDt.InitPlayerAmmo(PlayerState);
                        }
                    }
                }

                float disMV = Vector3.Distance(firePos, posArray[0]);
                lobTime = disMV / MvSpeed;
                float lobHeight = disMV * XKPlayerGlobalDt.GetInstance().KeyPaiJiPaoValPlayer;
                //lobHeight = lobHeight > 10f ? 10f : lobHeight;
                if (m_AmmmoData != null && autoFireCom != null)
                {
                    GameObject objCore = m_AmmmoData.GetAmmoCore(autoFireCom.CountAmmoStateZhuPao);
                    if (objCore != null)
                    {
                        AmmoCore = objCore;
                    }
                }
                AmmoCore.transform.localPosition    = Vector3.zero;
                AmmoCore.transform.localEulerAngles = Vector3.zero;
                iTween.MoveBy(AmmoCore, iTween.Hash("y", lobHeight,
                                                    "time", lobTime / 2,
                                                    "easeType", iTween.EaseType.easeOutQuad));
                iTween.MoveBy(AmmoCore, iTween.Hash("y", -lobHeight,
                                                    "time", lobTime / 2,
                                                    "delay", lobTime / 2,
                                                    "easeType", iTween.EaseType.easeInCubic));
                //iTween.FadeTo(gameObject, iTween.Hash("delay", 3, "time", .5, "alpha", 0, "onComplete", "CleanUp"));
            }
            posArray[1] = firePos;
            //AmmoStartPos = AmmoTran.position;
            iTween.MoveTo(gameObject, iTween.Hash("position", firePos,
                                                  "time", lobTime,
                                                  "easeType", iTween.EaseType.linear,
                                                  "oncomplete", "MoveAmmoOnCompelteITween"));
        }
        else
        {
            int              countMark = ammoMovePath.transform.childCount;
            Transform[]      tranArray = ammoMovePath.transform.GetComponentsInChildren <Transform>();
            List <Transform> nodesTran = new List <Transform>(tranArray)
            {
            };
            nodesTran.Remove(ammoMovePath.transform);
            transform.position = nodesTran[0].position;
            transform.rotation = nodesTran[0].rotation;
            firePos            = nodesTran[countMark - 1].position;
            //AmmoStartPos = nodesTran[countMark-2].position;
            iTween.MoveTo(ObjAmmo, iTween.Hash("path", nodesTran.ToArray(),
                                               "speed", MvSpeed,
                                               "orienttopath", true,
                                               "easeType", iTween.EaseType.linear,
                                               "oncomplete", "MoveAmmoOnCompelteITween"));
        }
        //AmmoEndPos = firePos;
    }