//7.创建受击特效 public BeAttackEffect CreateBeAttackEffect(UInt64 owner, UInt64 target, uint skillID) { SkillAccountConfig skillAccConfig = ConfigReader.GetSkillAccountCfg(skillID); //判断是否有后续屏幕振动效果 if (skillAccConfig != null && skillAccConfig.cameraId != 0) { //振动类型1 释放为本机振动 2受机为本机振动 bool shakeFlag = false; if (skillAccConfig.cameraTarget == 1) { Ientity ownerEntity = null; EntityManager.AllEntitys.TryGetValue(owner, out ownerEntity); if (ownerEntity != null && ownerEntity is Iselfplayer) { shakeFlag = true; } } else if (skillAccConfig.cameraTarget == 2) { Ientity targetEntity = null; EntityManager.AllEntitys.TryGetValue(target, out targetEntity); if (targetEntity != null && targetEntity is Iselfplayer) { shakeFlag = true; } } else if (skillAccConfig.cameraTarget == 3) { Ientity ownerEntity = null; Ientity targetEntity = null; EntityManager.AllEntitys.TryGetValue(owner, out ownerEntity); EntityManager.AllEntitys.TryGetValue(target, out targetEntity); if ((ownerEntity != null && ownerEntity is Iselfplayer) || targetEntity != null && targetEntity is Iselfplayer) { shakeFlag = true; } } if (shakeFlag) { //获屏幕振动信息 SkillCameraConfig skillCameracfg = ConfigReader.GetSkillCameraConfig(skillAccConfig.cameraId); if (skillCameracfg != null) { //被击飞信息 float period = skillCameracfg.mPeriod; float offPeriod = skillCameracfg.mOffPeriod; int shakeOrient = skillCameracfg.mShakeOrient; float shakeTime = skillCameracfg.mShakeTime; float maxWave = skillCameracfg.mMaxWave; float minWave = skillCameracfg.mMinWave; Shakecamera(period, offPeriod, shakeOrient, shakeTime, maxWave, minWave); } } } //判断路径是否有效 if (skillAccConfig == null || skillAccConfig.effect == "0") { return(null); } //加载特效信息 Ientity entityOwner, entityTarget; EntityManager.AllEntitys.TryGetValue(owner, out entityOwner); EntityManager.AllEntitys.TryGetValue(target, out entityTarget); //根据受击特效跟玩家距离判断是否需要创建特效 if (entityTarget != null) { if (!CheckEffectValid(entityTarget.objTransform.position, skillAccConfig.lifeTime)) { return(null); } } string resourcePath = GameConstDefine.LoadGameSkillEffectPath + "hit/" + skillAccConfig.effect; BeAttackEffect effect = new BeAttackEffect(); if (entityTarget != null) { effect.enTargetKey = entityTarget.GameObjGUID; } if (entityOwner == null) { return(null); } effect.enOwnerKey = entityOwner.GameObjGUID; effect.skillID = skillID; effect.resPath = resourcePath; effect.cehuaTime = skillAccConfig.lifeTime; //创建 effect.Create(); //播放声音 string soundPath = GameConstDefine.LoadGameSoundPath + skillAccConfig.sound; if (skillAccConfig.sound != "0") { PlayAudio(effect, soundPath, effect.obj); } AddEffect(effect.projectID, effect); return(effect); }
public ReadSkillCameraConfig(string xmlFilePath) { ResourceItem xmlfileUnit = ResourcesManager.Instance.loadImmediate(xmlFilePath, ResourceType.ASSET); TextAsset xmlfile = xmlfileUnit.Asset as TextAsset; if (!xmlfile) { Debug.LogError(" error infos: 没有找到指定的xml文件:" + xmlFilePath); } xmlDoc = new XmlDocument(); xmlDoc.LoadXml(xmlfile.text); XmlNodeList infoNodeList = xmlDoc.SelectSingleNode("SkillCfg_Camera").ChildNodes; for (int i = 0; i < infoNodeList.Count; i++) { if ((infoNodeList[i] as XmlElement).GetAttributeNode("un32ID") == null) { continue; } string typeName = (infoNodeList[i] as XmlElement).GetAttributeNode("un32ID").InnerText; SkillCameraConfig skillinfo = new SkillCameraConfig(); skillinfo.id = Convert.ToInt32(typeName); foreach (XmlElement xEle in infoNodeList[i].ChildNodes) { switch (xEle.Name) { #region 搜索 case "szName:": { skillinfo.name = Convert.ToString(xEle.InnerText); } break; case "mPeriod": { skillinfo.mPeriod = Convert.ToSingle(xEle.InnerText); } break; case "mOffPeriod": { skillinfo.mOffPeriod = Convert.ToSingle(xEle.InnerText); } break; case "mShakeOrient": { skillinfo.mShakeOrient = Convert.ToInt32(xEle.InnerText); } break; case "mShakeTime": { skillinfo.mShakeTime = Convert.ToInt32(xEle.InnerText) / 1000.0f; } break; case "mMaxWave": { skillinfo.mMaxWave = Convert.ToSingle(xEle.InnerText); } break; case "mMinWave": { skillinfo.mMinWave = Convert.ToSingle(xEle.InnerText); } break; #endregion } } ConfigReader.skillCameraInfoDict.Add(skillinfo.id, skillinfo); } }