/// <summary> /// 创建掉落物协议 /// </summary> /// <param name="respond"></param> public void CreateDropItemByRespond(s2cSyncPersonalDrop respond) { if (respond.DropList.Count <= 0) { /// Debug.Log("CreateDropItemByRespond:the drop_list.Count <= 0"); return; } if (respond.IsMapSync == false) { int index = Random.Range(0, 2); WwiseUtil.PlaySound(WwiseManager.voiceComboID, index == 0 ? WwiseMusicSpecialType.SpecialType_Voice_minera_event3 : WwiseMusicSpecialType.SpecialType_Voice_minera_event4, WwiseMusicPalce.Palce_1st, false, null); } ulong parentid = 0; foreach (var item in respond.DropList) { string key = item.MapId.ToString() + item.AreaUid.ToString() + item.ChestNpcUid.ToString(); if (!m_GatherDropItemInfos.ContainsKey(key)) { MineDropItemInfo mineDropItemInfo = new MineDropItemInfo(); mineDropItemInfo.mapid = item.MapId; mineDropItemInfo.areaid = item.AreaUid; mineDropItemInfo.uid = item.ChestNpcUid; mineDropItemInfo.tid = item.ChestNpcTid; mineDropItemInfo.item_tid = item.DropItemTid; mineDropItemInfo.ship_tlv = item.ShipTlv; mineDropItemInfo.parentid = item.FromHeroUid; mineDropItemInfo.positon_x = item.PositonX; mineDropItemInfo.positon_y = item.PositonY; mineDropItemInfo.positon_z = item.PositonZ; if (parentid == 0) { parentid = mineDropItemInfo.parentid; } uint mapId = m_CfgEternityProxy.GetCurrentMapData().GamingmapId; ulong aredId = m_GameplayProxy.GetCurrentAreaUid(); if (mapId == item.MapId && aredId == item.AreaUid) { CreateDropItem(key, mineDropItemInfo, respond.IsMapSync == false); } } } /// 新掉落播音效 if (respond.IsDieDrop == false && respond.IsMapSync == false && parentid != 0) { SpacecraftEntity spacecraftEntity = m_GameplayProxy.GetEntityById <SpacecraftEntity>((uint)parentid); spacecraftEntity.SendEvent(ComponentEventName.PlayDropSound, null); } }
private void DestoryDropInfo(string key, bool clearInfo = true) { MineDropItemInfo gatherDropItemInfo = m_GatherDropItemInfos[key]; if (gatherDropItemInfo.obj != null) { DestroyGameObject(ref gatherDropItemInfo.obj); } if (clearInfo) { m_GatherDropItemInfos.Remove(key); } }
IEnumerator PickUpEffect(string key, MineDropComponent mineDropComponent) { mineDropComponent.AddEffect(); MineDropItemInfo gatherDropItemInfo = m_GatherDropItemInfos[key]; if (gatherDropItemInfo.obj != null) { gatherDropItemInfo.obj.SetActive(false); } yield return(new WaitForSeconds(3.0f)); DestoryDropInfo(key); }
private void CreateDropItem(string key, MineDropItemInfo mineDropItemInfo, bool needFly = false) { NpcCombat?nc = m_CfgEternityProxy.GetNpcCombatByKey(mineDropItemInfo.tid); if (!nc.HasValue) { return; } PackageBoxAttr?pb = m_CfgEternityProxy.GetPackageBoxAttrByModelIdAndGrade((uint)nc.Value.BoxModel, mineDropItemInfo.ship_tlv); if (!pb.HasValue) { return; } int modelid = pb.Value.BoxModel; Model?mdata = m_CfgEternityProxy.GetModel(modelid); if (mdata.Value.AssetName.Equals(string.Empty)) { return; } Vector3 curPos = Vector3.zero; SpacecraftEntity spe = m_GameplayProxy.GetEntityById <SpacecraftEntity>((uint)mineDropItemInfo.parentid) as SpacecraftEntity; if (spe) { curPos = spe.GetRootTransform().position; } AssetUtil.InstanceAssetAsync(mdata.Value.AssetName, (address, uObj, userData) => { mineDropItemInfo.obj = uObj as GameObject; MineDropComponent mineDropComponent = mineDropItemInfo.obj.GetComponent <MineDropComponent>(); if (!mineDropComponent) { mineDropComponent = mineDropItemInfo.obj.AddComponent <MineDropComponent>(); } SpacecraftEntity mainPlayer = m_GameplayProxy.GetMainPlayer(); mineDropComponent.Initialize(mainPlayer, mineDropItemInfo.uid, mineDropItemInfo.tid, mineDropItemInfo.item_tid, pb); if (needFly) { mineDropItemInfo.obj.transform.position = curPos; mineDropComponent.AddFlyEffect(mineDropItemInfo.positon_x, mineDropItemInfo.positon_y, mineDropItemInfo.positon_z); } else { Vector3 endPos = new Vector3(mineDropItemInfo.positon_x, mineDropItemInfo.positon_y, mineDropItemInfo.positon_z); Vector3 clientPosition = m_GameplayProxy.ServerAreaOffsetToClientPosition(endPos); mineDropItemInfo.obj.transform.position = clientPosition; mineDropComponent.SetDropItemState(DropItemState.Stay); mineDropComponent.AddEffect(true); } /// 跃迁客户端不清数据 if (m_GatherDropItemInfos.ContainsKey(key)) { m_GatherDropItemInfos.Remove(key); } m_GatherDropItemInfos.Add(key, mineDropItemInfo); }); }