/// <summary> /// 播放声音 /// </summary> void OnPlaySound(FrameActionData frameData) { if (frameData.bPlaySound) { soundMgr.Play("Audios/Hit_Attack1"); } }
private void NpcSkillAttackInternal(RoleView target, NpcSkillAttackEvent evData) { var skillKey = evData.bUseSkill ? AnimNames.Skill : AnimNames.Attack; SkillData skillData = null; roleData.skills.TryGetValue(skillKey, out skillData); if (skillData != null) { var targetFrameAction = new FrameActionData(); //被击者 targetFrameAction.currHp = evData.currHp; targetFrameAction.maxHp = evData.maxHp; targetFrameAction.amount = evData.amount; targetFrameAction.bPlaySound = evData.bPlaySound; targetFrameAction.type = FrameActionType.Passive; targetFrameAction.skillParams = skillData.skillParams; target.OnTakeDamage(targetFrameAction); var myFrameAction = new FrameActionData(); //攻击者 myFrameAction.type = FrameActionType.Active; myFrameAction.skillParams = skillData.skillParams; myFrameAction.bPlaySound = evData.bPlaySound; myFrameAction.target = target; myFrameAction.animClipName = evData.bUseSkill ? AnimNames.Skill : AnimNames.Attack; timerMgr.AddFrameActions(skillData.frameDatas, myFrameAction, OnFrameAction); } else { GLogger.Red("!!!NpcSkillAttackInternal:>>" + evData.attackerid + " " + evData.defenderid + " " + evData.bUseSkill); } }
/// <summary> /// 播放特效 /// </summary> void OnPlayEffect(FrameActionData frameData) { var effectid = frameData.skillParams.effectId; if (effectid > 0) { var roleObj = frameData.target as RoleView; var offsetPos = Vector3.up * render.bounds.size.y / 2; var spawnPos = roleObj.gameObject.transform.position + offsetPos; effectMgr.Create(effectid, spawnPos, frameData.bPlaySound); } }
/// <summary> /// 发射子弹 /// </summary> private void OnFireBullet(FrameActionData frameData) { var bulletid = frameData.skillParams.bulletId; if (bulletid > 0) { var roleObj = frameData.target as RoleView; var startPos = gameObject.transform.position; var offsetPos = Vector3.up * render.bounds.size.y / 2; var destPos = roleObj.gameObject.transform.position + offsetPos; bulletMgr.Create(bulletid, startPos, destPos, 0.2f); } }
/// <summary> /// 被击ACTION /// </summary> void OnBeAttack(FrameActionData frameData) { if (!bRunning) { PlayRoleAnim(AnimNames.BeAttacked); } var effectid = frameData.skillParams.beAttackEffectId; if (effectid != 0) { var pos = gameObject.transform.position; effectMgr.Create(effectid, pos, frameData.bPlaySound); } }
/// <summary> /// 播放动画 /// </summary> void OnPlayAnim(FrameActionData frameData) { PlayRoleAnim(frameData.animClipName); }
/// <summary> /// 受到伤害 /// </summary> void OnTakeDamage(FrameActionData frameActionData) { var skillData = roleData.skills[AnimNames.Attack]; timerMgr.AddFrameActions(skillData.frameDatas, frameActionData, OnFrameAction); }