public float m_FXOffSet; //特效偏移 public override void LoadData(string key) { DataTable table = DataManager.GetData("SkillStatusData"); if (!table.ContainsKey(key)) { throw new Exception("SkillStatusDataGenerate LoadData Exception Not Fond key ->" + key + "<-"); } SingleData data = table[key]; m_key = key; m_AnimName = data.GetString("AnimName"); m_Time = data.GetFloat("Time"); m_SFXDelay = data.GetFloat("SFXDelay"); m_SFXName = data.GetString("SFXName"); m_FXCreatPoint = data.GetEnum <HardPointEnum>("FXCreatPoint"); m_FXLifeTime = data.GetFloat("FXLifeTime"); m_FXDelay = data.GetFloat("FXDelay"); m_FXName = data.GetString("FXName"); m_FollowFXCreatPoint = data.GetEnum <HardPointEnum>("FollowFXCreatPoint"); m_FollowFXLifeTime = data.GetFloat("FollowFXLifeTime"); m_FollowFXName = data.GetString("FollowFXName"); m_CameraMove = data.GetString("CameraMove"); m_FollowFXOffSet = data.GetFloat("FollowFXOffSet"); m_FXOffSet = data.GetFloat("FXOffSet"); }
public Transform GetHardPoint(HardPointEnum pointEnum) { Transform result = null; switch (pointEnum) { case HardPointEnum.head: result = m_head; break; case HardPointEnum.chest: result = m_chest; break; case HardPointEnum.hand_R: result = m_hand_R; break; case HardPointEnum.hand_L: result = m_hand_L; break; case HardPointEnum.position: result = m_pos; break; case HardPointEnum.enemy: result = m_enemy; break; case HardPointEnum.Weapon_01: result = m_weapon01; break; case HardPointEnum.Weapon_02: result = m_weapon02; break; case HardPointEnum.headTop: result = m_headTop; break; default: throw new Exception("ERROR HardPointEnum " + pointEnum); } if (result == null) { throw new Exception("ERROR HardPoint is null ! " + pointEnum); } return(result); }
public string m_BlowFlyID; //造成目标击飞ID public override void LoadData(string key) { DataTable table = DataManager.GetData("FlyData"); if (!table.ContainsKey(key)) { throw new Exception("FlyDataGenerate LoadData Exception Not Fond key ->" + key + "<-"); } SingleData data = table[key]; m_key = key; m_ModelName = data.GetString("ModelName"); m_HitFXCreatPoint = data.GetEnum <HardPointEnum>("HitFXCreatPoint"); m_HitEffect = data.GetString("HitEffect"); m_Speed = data.GetInt("Speed"); m_Radius = data.GetInt("Radius"); m_LiveTime = data.GetInt("LiveTime"); m_CollisionTrigger = data.GetBool("CollisionTrigger"); m_TriggerSkill = data.GetString("TriggerSkill"); m_AcrossEnemy = data.GetBool("AcrossEnemy"); m_HitSFX = data.GetString("HitSFX"); m_HurtBuff = data.GetStringArray("HurtBuff"); m_BlowFlyID = data.GetString("BlowFlyID"); }
public int m_limit; //叠加上限 public override void LoadData(string key) { DataTable table = DataManager.GetData("BuffData"); if (!table.ContainsKey(key)) { throw new Exception("BuffDataGenerate LoadData Exception Not Fond key ->" + key + "<-"); } SingleData data = table[key]; m_key = key; m_BuffCreateFX = data.GetString("BuffCreateFX"); m_BuffExitFX = data.GetString("BuffExitFX"); m_BuffFX = data.GetString("BuffFX"); m_BuffFollowPos = data.GetEnum <HardPointEnum>("BuffFollowPos"); m_BuffTime = data.GetInt("BuffTime"); m_AttackChange = data.GetInt("AttackChange"); m_AttackChangePercantage = data.GetFloat("AttackChangePercantage"); m_SpeedChange = data.GetInt("SpeedChange"); m_SpeedChangePercentage = data.GetFloat("SpeedChangePercentage"); m_BuffEffectSpace = data.GetInt("BuffEffectSpace"); m_Invincible = data.GetBool("Invincible"); m_BuffCreateSFX = data.GetString("BuffCreateSFX"); m_BuffExitSFX = data.GetString("BuffExitSFX"); m_BuffSFX = data.GetString("BuffSFX"); m_Dizziness = data.GetBool("Dizziness"); m_Cloaking = data.GetBool("Cloaking"); m_BeDamageInterrupt = data.GetBool("BeDamageInterrupt"); m_UseSkilIinterrupt = data.GetBool("UseSkilIinterrupt"); m_RecoverNumber = data.GetInt("RecoverNumber"); m_DamageNumber = data.GetInt("DamageNumber"); m_IsTakeOver = data.GetBool("IsTakeOver"); m_AnimName = data.GetString("AnimName"); m_TrueSight = data.GetBool("TrueSight"); m_BuffhitSFX = data.GetString("BuffhitSFX"); m_defChange = data.GetInt("defChange"); m_hprecoverChange = data.GetInt("hprecoverChange"); m_critChange = data.GetInt("critChange"); m_critdamageChange = data.GetInt("critdamageChange"); m_ignoredefChange = data.GetInt("ignoredefChange"); m_hpabsorbChange = data.GetInt("hpabsorbChange"); m_toughChange = data.GetInt("toughChange"); m_defPercantage = data.GetFloat("defPercantage"); m_hprecoverPercantage = data.GetFloat("hprecoverPercantage"); m_critPercantage = data.GetFloat("critPercantage"); m_critdamagePercantage = data.GetFloat("critdamagePercantage"); m_ignoredefPercantage = data.GetFloat("ignoredefPercantage"); m_hpabsorbPercantage = data.GetFloat("hpabsorbPercantage"); m_toughPercantage = data.GetFloat("toughPercantage"); m_EffectArea = data.GetString("EffectArea"); m_limit = data.GetInt("limit"); }
public void CreateFollowSkillEffect(EntityBase entity, string effectName, HardPointEnum hardPoint, float time) { PerfabComponent pc = entity.GetComp <PerfabComponent>(); EffectData data = new EffectData(); PoolObject effectP = GameObjectManager.GetPoolObject(effectName, pc.hardPoint.hardPoint.GetHardPoint(hardPoint).gameObject); effectP.transform.localPosition = Vector3.zero; effectP.transform.localEulerAngles = Vector3.zero; data.m_effect = effectP; data.m_timer = time; //m_SkillEffectList.Add(data); //Debug.Log("CreateSkillEffect " + effectName + " time " + time + " " + " hard " + m_character.m_hardPoint.GetHardPoint(hardPoint).gameObject, effectP ); }
//CreatMesh RangeTip; public void CreatSkillEffect(EntityBase entity, SkillStatusComponent skillComp) { SkillStatusDataGenerate skillStatusData = null; switch (skillComp.m_skillStstus) { case SkillStatusEnum.Before: skillStatusData = skillComp.m_currentSkillData.BeforeInfo; break; case SkillStatusEnum.Current: skillStatusData = skillComp.m_currentSkillData.CurrentInfo; break; case SkillStatusEnum.Later: skillStatusData = skillComp.m_currentSkillData.LaterInfo; break; } string FXName = skillStatusData.m_FXName; float FXLifeTime = skillStatusData.m_FXLifeTime; float offset = skillStatusData.m_FXOffSet; HardPointEnum FXCreatPoint = skillStatusData.m_FXCreatPoint; string followFXName = skillStatusData.m_FollowFXName; float FLoffset = skillStatusData.m_FollowFXOffSet; HardPointEnum followFXCreatPoint = skillStatusData.m_FollowFXCreatPoint; float followFXLifeTime = skillStatusData.m_FollowFXLifeTime; //Debug.Log("FXName " + FXName); //Debug.Log("followFXName " + followFXName); //现在不管特效填跟不跟随都跟随角色,并在技能被打断时退出 if (FXName != "null") { //恢复不follow CreateEffect(entity, FXName, FXCreatPoint, FXLifeTime, offset); } if (followFXName != "null") { CreateFollowSkillEffect(entity, followFXName, followFXCreatPoint, followFXLifeTime); } }
public void CreateEffect(EntityBase entity, string effectName, HardPointEnum hardPoint, float time, float offset) { PerfabComponent pc = entity.GetComp <PerfabComponent>(); SkillStatusComponent ssc = entity.GetComp <SkillStatusComponent>(); MoveComponent mc = entity.GetComp <MoveComponent>(); //挂载点完全放弃了 Transform creatPoint = pc.hardPoint.hardPoint.GetHardPoint(hardPoint); Vector3 createPos = mc.pos.ToVector() + ssc.skillDir.ToVector() * offset; Vector3 charactorEugle = Vector3.zero; Vector3 m_aimWaistDir = ssc.skillDir.ToVector(); float euler = Mathf.Atan2(m_aimWaistDir.x, m_aimWaistDir.z) * Mathf.Rad2Deg; if (m_aimWaistDir.z == 0) { euler = 0; } charactorEugle.y = euler; TransfromComponent etc = new TransfromComponent(); etc.pos.FromVector(createPos); etc.dir.FromVector(m_aimWaistDir); AssetComponent eac = new AssetComponent(); eac.m_assetName = effectName; LifeSpanComponent elc = new LifeSpanComponent(); elc.lifeTime = (int)(time * 1000); m_world.CreateEntity("Effect" + effectName + entity.ID + createPos, etc, eac, elc); }
List <CreatPostionInfo> GetCreatePostionInfos(SkillDataGenerate skillData, EntityBase skiller, int Length) { MoveComponent mc = skiller.GetComp <MoveComponent>(); PlayerComponent pc = skiller.GetComp <PlayerComponent>(); List <CreatPostionInfo> result = new List <CreatPostionInfo>(); result.Clear(); if (Length == 0) { return(result); } HardPointEnum l_FXCreatPoint = skillData.m_FlyCreatPoint; Vector3 forward = pc.faceDir.ToVector(); Vector3 dir = forward; Vector3 pos = Vector3.zero; //获取散射区域 Area skillArea = UpdatSkillArea(areaCache, skillData, skiller, null); //TODO 寻敌方法 //CharacterBase enemy = GetRecentlyEnemy(skillArea, skiller.m_camp, false); //CharacterBase enemy = null; MoveComponent emc = null; if (l_FXCreatPoint != HardPointEnum.enemy) { pos = mc.pos.ToVector(); } else { if (emc == null) { return(result); } else { pos = emc.pos.ToVector(); } } Vector3 leftBorder = Vector3.zero; Vector3 leftDir = Vector3.zero; Vector3 leftPos = Vector3.zero; float sectorStep = 0; float rectangleStep = 0; AreaDataGenerate area = DataGenerateManager <AreaDataGenerate> .GetData(skillData.m_FlyObjectArea); switch (area.m_SkewDirection) { case DirectionEnum.Forward: break; case DirectionEnum.Backward: forward *= -1; break; case DirectionEnum.Close: forward = (emc.pos.ToVector() - mc.pos.ToVector()).normalized; break; case DirectionEnum.Leave: forward = (mc.pos.ToVector() - emc.pos.ToVector()).normalized; break; } switch (area.m_Shape) { case AreaType.Circle: leftBorder = forward.Vector3RotateInXZ(360 * 0.5f); sectorStep = 360 / (Length + 1); break; case AreaType.Sector: leftBorder = forward.Vector3RotateInXZ(area.m_Angle * 0.5f); sectorStep = area.m_Angle / (Length + 1); break; case AreaType.Rectangle: leftDir = forward.Vector3RotateInXZ(90); leftPos = pos + leftDir * area.m_Width * 0.5f; rectangleStep = area.m_Width / (Length + 1); break; } for (int i = 0; i < Length; i++) { switch (area.m_Shape) { case AreaType.Circle: case AreaType.Sector: dir = leftBorder.Vector3RotateInXZ2((i + 1) * sectorStep); pos = pos + forward * area.m_SkewDistance; break; case AreaType.Rectangle: pos = leftPos - leftDir * rectangleStep * (i + 1); break; } CreatPostionInfo cpi = new CreatPostionInfo(); cpi.m_pos = pos; cpi.m_dir = dir; result.Add(cpi); } return(result); }
List <CreatPostionInfo> GetCreatePostionInfos(SkillDataGenerate skillData, EntityBase skiller, int Length) { MoveComponent mc = skiller.GetComp <MoveComponent>(); SkillStatusComponent ssc = skiller.GetComp <SkillStatusComponent>(); List <CreatPostionInfo> result = new List <CreatPostionInfo>(); //result.Clear(); if (Length == 0) { return(result); } HardPointEnum l_FXCreatPoint = skillData.m_FlyCreatPoint; SyncVector3 forward = new SyncVector3().FromVector(ssc.skillDir.ToVector().normalized); SyncVector3 dir = forward; SyncVector3 pos = mc.pos; SyncVector3 leftBorder = new SyncVector3(); SyncVector3 leftDir = new SyncVector3(); SyncVector3 leftPos = new SyncVector3(); float sectorStep = 0; float rectangleStep = 0; AreaDataGenerate area = DataGenerateManager <AreaDataGenerate> .GetData(skillData.m_FlyObjectArea); switch (area.m_SkewDirection) { case DirectionEnum.Forward: break; case DirectionEnum.Backward: forward *= -1; break; //case DirectionEnum.Close: forward = (emc.pos - mc.pos); break; //case DirectionEnum.Leave: forward = (mc.pos - emc.pos); break; } switch (area.m_Shape) { case AreaType.Circle: leftBorder = forward.RotateInXZ(360 * 0.5f); sectorStep = 360 / (Length + 1); break; case AreaType.Sector: leftBorder = forward.RotateInXZ(area.m_Angle * 0.5f); sectorStep = area.m_Angle / (Length + 1); pos = pos + forward * area.m_SkewDistance; break; case AreaType.Rectangle: leftDir = forward.RotateInXZ(90); leftPos = pos + leftDir * area.m_Width * 0.5f; rectangleStep = area.m_Width / (Length + 1); break; } for (int i = 0; i < Length; i++) { switch (area.m_Shape) { case AreaType.Circle: case AreaType.Sector: dir = leftBorder.RotateInXZ2((i + 1) * sectorStep); break; case AreaType.Rectangle: pos = leftPos - leftDir * rectangleStep * (i + 1); break; } CreatPostionInfo cpi = new CreatPostionInfo(); pos.y = 0; dir.y = 0; cpi.m_pos = pos; cpi.m_dir = dir; result.Add(cpi); //CreatPostionInfo cpi = new CreatPostionInfo(); //cpi.m_pos = mc.pos.DeepCopy(); //cpi.m_dir.FromVector( ssc.skillDir.DeepCopy().ToVector().normalized); //result.Add(cpi); } return(result); }
public string m_SkillAgency; //代放技能 public override void LoadData(string key) { DataTable table = DataManager.GetData("SkillData"); if (!table.ContainsKey(key)) { throw new Exception("SkillDataGenerate LoadData Exception Not Fond key ->" + key + "<-"); } SingleData data = table[key]; m_key = key; m_name = data.GetString("name"); m_info = data.GetString("info"); m_icon = data.GetString("icon"); m_HitFXName = data.GetString("HitFXName"); m_EffectArea = data.GetString("EffectArea"); m_DamageValue = data.GetInt("DamageValue"); m_HurtSFXDelay = data.GetFloat("HurtSFXDelay"); m_HurtSFX = data.GetString("HurtSFX"); m_CanBreak = data.GetBool("CanBreak"); m_BlowFlyID = data.GetString("BlowFlyID"); m_HurtBuff = data.GetStringArray("HurtBuff"); m_CD = data.GetInt("CD"); m_Moment = data.GetBool("Moment"); m_TriggerSpaceTime = data.GetInt("TriggerSpaceTime"); m_allowMove = data.GetBool("allowMove"); m_noclip = data.GetBool("noclip"); m_FlyObjectArea = data.GetString("FlyObjectArea"); m_FlyDamageValue = data.GetInt("FlyDamageValue"); m_FlyObjectName = data.GetStringArray("FlyObjectName"); m_flydistance = data.GetInt("flydistance"); m_uplv = data.GetInt("uplv"); m_nextskill = data.GetString("nextskill"); m_moneytype = data.GetInt("moneytype"); m_moneynum = data.GetInt("moneynum"); m_material = data.GetInt("material"); m_materialnum = data.GetInt("materialnum"); m_BeforeStatus = data.GetString("BeforeStatus"); m_CurrentStatus = data.GetString("CurrentStatus"); m_LaterStatus = data.GetString("LaterStatus"); m_RaiseTime = data.GetFloat("RaiseTime"); m_HitTime = data.GetInt("HitTime"); m_HitFXCreatPoint = data.GetEnum <HardPointEnum>("HitFXCreatPoint"); m_AreaTexture = data.GetString("AreaTexture"); m_DamagePer = data.GetInt("DamagePer"); m_RecoverValue = data.GetInt("RecoverValue"); m_ReValuep = data.GetInt("ReValuep"); m_HurtCameraShoke = data.GetString("HurtCameraShoke"); m_flydamageper = data.GetInt("flydamageper"); m_FlyCreatPoint = data.GetEnum <HardPointEnum>("FlyCreatPoint"); m_CanBeBreakInC = data.GetBool("CanBeBreakInC"); m_CanBeBreak = data.GetBool("CanBeBreak"); m_MoveID = data.GetString("MoveID"); m_SelfBuff = data.GetStringArray("SelfBuff"); m_RecoverBuff = data.GetStringArray("RecoverBuff"); m_SummonMonster = data.GetStringArray("SummonMonster"); m_AffectTrap = data.GetBool("AffectTrap"); m_IsAreaTip = data.GetBool("IsAreaTip"); m_SkillAgency = data.GetString("SkillAgency"); }