예제 #1
0
 /// <summary>
 /// 播放声音
 /// </summary>
 void OnPlaySound(FrameActionData frameData)
 {
     if (frameData.bPlaySound)
     {
         soundMgr.Play("Audios/Hit_Attack1");
     }
 }
예제 #2
0
        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);
            }
        }
예제 #3
0
        /// <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);
            }
        }
예제 #4
0
        /// <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);
            }
        }
예제 #5
0
        /// <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);
            }
        }
예제 #6
0
 /// <summary>
 /// 播放动画
 /// </summary>
 void OnPlayAnim(FrameActionData frameData)
 {
     PlayRoleAnim(frameData.animClipName);
 }
예제 #7
0
        /// <summary>
        /// 受到伤害
        /// </summary>
        void OnTakeDamage(FrameActionData frameActionData)
        {
            var skillData = roleData.skills[AnimNames.Attack];

            timerMgr.AddFrameActions(skillData.frameDatas, frameActionData, OnFrameAction);
        }