/// <summary> /// 调整攻击者的方向 /// </summary> /// <param name="param"></param> /// <param name="masteBeast"></param> public virtual void AdjustAttackDirection(CastSkillParam param, Beast masteBeast) { Vector2 forward = Vector2.zero; if (null == param) { return; } if (param.listTargetRoleID.Count > 0) { if (param.listTargetRoleID[0] != masteBeast.Id) { Beast beAttacker = Singleton <BeastManager> .singleton.GetBeastById(param.listTargetRoleID[0]); if (beAttacker != null) { forward = beAttacker.RealPos2D - masteBeast.RealPos2D; masteBeast.Forward = forward; } } } else { Vector2 targetPos = Hexagon.GetHexPosByIndex(param.vec3TargetPos.nRow, param.vec3TargetPos.nCol, Space.World); forward = targetPos - masteBeast.RealPos2D; masteBeast.Forward = forward; } }
public virtual void OnCastSkillEffect(CastSkillParam castSkillParam) { if (castSkillParam != null) { Beast beast = Singleton <BeastManager> .singleton.GetBeastById(castSkillParam.m_unMasterBeastId); if (beast != null) { DataSkillShow data = beast.GetSkillShow(this.m_unskillId); int attackEffectId = 0; int beAttackEffectId = 0; this.GetEffectId(beast.Id, ref attackEffectId, ref beAttackEffectId); if (castSkillParam.listTargetRoleID.Count == 1) { this.m_nEffectId = EffectManager.Instance.PlayEffect(attackEffectId, beast.Id, Hexagon.GetHex3DPos(this.GetHeroPosByCastSkillParam(castSkillParam), Space.World) , null, castSkillParam.listTargetRoleID[0], Hexagon.GetHex3DPos(castSkillParam.vec3TargetPos, Space.World), null, Vector3.zero); } if (data != null && data.IsEffectForward) { this.AdjustAttackDirection(castSkillParam, beast); } } } }
/// <summary> /// 神兽释放技能 /// </summary> /// <param name="beastId"></param> /// <param name="skillId"></param> /// <param name="param"></param> public void OnBeastCastSkill(long beastId, int skillId, CastSkillParam param) { Beast beast = this.GetBeastById(beastId); if (beast != null) { } }
/// <summary> /// 技能释放特效表现 /// </summary> /// <param name="beastId"></param> /// <param name="unSkillId"></param> /// <param name="castSkillParam"></param> public void OnBeastCastSkillEffect(long beastId, int unSkillId, CastSkillParam castSkillParam) { Beast beast = this.GetBeastById(beastId); if (beast != null) { //beast.OnCastSkillEffect(unSkillId, castSkillParam); } }
/// <summary> /// 神兽释放技能表现 /// </summary> /// <param name="beastId"></param> /// <param name="skillId"></param> /// <param name="param"></param> public void OnBeastCastSkillAction(long beastId, int skillId, CastSkillParam param) { Beast beast = this.GetBeastById(beastId); if (beast != null) { beast.OnCastSkillAction(beastId, skillId, param); } }
/// <summary> /// 技能释放特效 /// </summary> /// <param name="unSkillId"></param> /// <param name="castSkillParam"></param> public void OnCastSkillEffect(int unSkillId, CastSkillParam castSkillParam) { try { SkillBase skillStrategy = SkillGameManager.GetSkillBase(unSkillId); if (null != skillStrategy) { skillStrategy.OnCastSkillEffect(castSkillParam); } } catch (Exception ex) { this.m_log.Fatal(ex.ToString()); } }
/// <summary> /// 神兽释放技能表现 /// </summary> /// <param name="skillId"></param> /// <param name="param"></param> public void OnCastSkillAction(int skillId, CastSkillParam param) { try { SkillBase skill = SkillGameManager.GetSkillBase(skillId); if (skill != null) { skill.OnCastAction(param); } } catch (Exception e) { this.m_log.Fatal(e.ToString()); } }
/// <summary> /// 取得技能特效的位置,如果神兽存在的话,就神兽位置,否则就是目标位置 /// </summary> /// <param name="castSkill"></param> /// <returns></returns> private CVector3 GetHeroPosByCastSkillParam(CastSkillParam castSkill) { Beast heroById = Singleton <BeastManager> .singleton.GetBeastById(castSkill.m_unMasterBeastId); CVector3 result; if (heroById != null) { result = heroById.Pos; } else { result = castSkill.vec3TargetPos; } return(result); }
public override void Trigger() { if (this.SkillId > 0) { CastSkillParam param = new CastSkillParam(); param.m_unMasterBeastId = this.AttackerId; param.listTargetRoleID = new List <long>(); param.listTargetRoleID.AddRange(this.BeAttackerId); param.unTargetSkillID = this.SkillId; if (this.BeAttackerId.Count > 0) { param.vec3TargetPos = new CVector3(this.BeAttackerPos[0]); } Singleton <BeastManager> .singleton.OnBeastCastSkillAction(this.AttackerId, this.SkillId, param); } }
public override void Trigger() { if (this.SkillID > 0u) { CastSkillParam castSkillParam = new CastSkillParam(); castSkillParam.m_unMasterBeastId = this.AttackerId; castSkillParam.listTargetRoleID = new List <long>(); castSkillParam.listTargetRoleID.AddRange(this.ListBeAttackerId); castSkillParam.unTargetSkillID = this.SkillID; if (this.ListBeAttackPos.Count > 0) { castSkillParam.vec3TargetPos = new CVector3(this.ListBeAttackPos[0]); } Singleton <BeastManager> .singleton.OnBeastCastSkillEffect(this.AttackerId, this.SkillID, castSkillParam); } }
/// <summary> /// 调整被攻击者的方向 /// </summary> /// <param name="param"></param> /// <param name="masteBeast"></param> public virtual void AdjustBeAttackerDirection(CastSkillParam param, Beast masteBeast) { Vector2 forward = Vector2.zero; if (param != null) { foreach (var current in param.listTargetRoleID) { Beast beast = Singleton <BeastManager> .singleton.GetBeastById(current); if (beast != null) { forward = masteBeast.RealPos2D - beast.RealPos2D; beast.Forward = forward; } } } }
/// <summary> /// 技能释放表现 /// </summary> /// <param name="param"></param> public virtual void OnCastAction(CastSkillParam param) { if (param != null) { long masterBeastId = param.m_unMasterBeastId; XLog.Log.Debug("OnCast:" + this.m_unskillId); Beast beast = Singleton <BeastManager> .singleton.GetBeastById(masterBeastId); if (beast != null) { DataSkillShow data = beast.GetSkillShow(this.m_unskillId); if (data != null) { if (this.IsActive) { if (!data.IsEffectForward) { this.AdjustAttackDirection(param, beast); } this.AdjustBeAttackerDirection(param, beast); } if (data.SkillAction == 1) { if (string.IsNullOrEmpty(data.AttackAction)) { beast.PlayAnim(this.GetSkillAnimName(masterBeastId)); } else { beast.PlayAnim(data.AttackAction); } } } } } }
/// <summary> /// 释放技能 /// </summary> /// <param name="skillId"></param> /// <param name="param"></param> public void OnCastSkill(int skillId, CastSkillParam param) { try { SkillGameData skillData = this.GetSkillById(skillId); if (skillData != null && !skillData.IsError) { foreach (var current in this.m_listSkillData) { SkillBase skillBegin = SkillGameManager.GetSkillBase(current.Id); if (skillBegin != null) { skillBegin.OnCastSkillBegin(this.m_unMasterBeastId, skillId); } } SkillBase skill = SkillGameManager.GetSkillBase(skillData.Id); if (skill != null) { param.unTargetSkillID = skillId; skill.Cast(param); } foreach (var current in this.m_listSkillData) { SkillBase skillEnd = SkillGameManager.GetSkillBase(current.Id); if (skillEnd != null) { skillEnd.OnCastSkillBegin(this.m_unMasterBeastId, skillId); } } } } catch (Exception e) { this.m_log.Fatal(e); } }
/// <summary> /// 技能释放中 /// </summary> /// <param name="castSkillParam"></param> public virtual void Cast(CastSkillParam castSkillParam) { DataSkill skillData = GameData <DataSkill> .dataMap[castSkillParam.unTargetSkillID]; Beast beast = Singleton <BeastManager> .singleton.GetBeastById(castSkillParam.m_unMasterBeastId); }
/// <summary> /// 技能释放特效表现 /// </summary> /// <param name="unSkillId"></param> /// <param name="castSkillParam"></param> public void OnCastSkillEffect(int unSkillId, CastSkillParam castSkillParam) { this.m_skillManager.OnCastSkillEffect(unSkillId, castSkillParam); }
/// <summary> /// 神兽释放技能表现 /// </summary> /// <param name="beastId"></param> /// <param name="skillId"></param> /// <param name="param"></param> public void OnCastSkillAction(long beastId, int skillId, CastSkillParam param) { this.m_skillManager.OnCastSkillAction(skillId, param); }