Ejemplo n.º 1
0
 public void Start()
 {
     _petVo         = MeController.GetMeVoByType <PetVo>();
     _talentSkillVo = BaseDataMgr.instance.GetSysSkillBaseVo(_petVo.SkillId);
     if (_talentSkillVo != null)
     {
         _talentSkillActionVo = BaseDataMgr.instance.GetSysSkillActionVo(_talentSkillVo.skill_group);
     }
     _masterVo      = _petVo.MasterVo;
     _masterDisplay = _petVo.MasterDisplay;
 }
Ejemplo n.º 2
0
        /// <summary>
        ///     攻击伤害检测
        /// </summary>
        public bool CheckDamage(Vector3 effectPosition, int index)
        {
            SysSkillBaseVo skillVo = CurrentSkillVo;

            print(skillVo.unikey);
            if (!MeController.Me.IsUsing)
            {
                return(false);
            }
            bool result = false;

            switch (MeController.Me.Type)
            {
            case DisplayType.PET:
                result = DamageCheck.Instance.CheckPetInjured2D(MeController, skillVo, effectPosition,
                                                                _selfTransform.position,
                                                                MeController.Me.CurFaceDire, GetEnemyDisplay(), _currentActionVo.IsBullet, _checkedTime, index,
                                                                AppMap.Instance.mapParser.NeedSyn);
                break;

            case DisplayType.ROLE:
                //主角攻击的伤害检测
                bool needSyn = AppMap.Instance.mapParser.NeedSyn;
                if (MeController.GetMeVo().Id == AppMap.Instance.me.GetVo().Id)
                {
                    result = DamageCheck.Instance.CheckMeInjured2D(MeController, skillVo, effectPosition,
                                                                   _selfTransform.position,
                                                                   MeController.Me.CurFaceDire, GetEnemyDisplay(), _currentActionVo.IsBullet, _checkedTime,
                                                                   index, needSyn);
                    if (result)
                    {
                        CameraEffectManager.NormalAttackShake();
                        if (MeVo.instance.CurMp < MeVo.instance.Mp)
                        {
                            MeVo.instance.CurMp += 1;
                        }
                        PlayBeAttackedSound(skillVo.unikey);     //播放受击音效
                    }
                }
                else
                {
                    //其他玩家攻击的伤害检测
                    var playerVo = MeController.GetMeVoByType <PlayerVo>();
                    result = DamageCheck.Instance.CheckPlayerInjured2D(MeController, skillVo, playerVo, effectPosition,
                                                                       _selfTransform.position,
                                                                       MeController.Me.CurFaceDire, GetEnemyDisplay(), _currentActionVo.IsBullet, _checkedTime, index, needSyn);
                    if (!needSyn && result)
                    {
                        if (playerVo.CurMp < playerVo.Mp)
                        {
                            playerVo.CurMp += 1;
                        }
                    }
                }
                break;

            case DisplayType.MONSTER:     //怪物攻击的碰撞检测
                result = DamageCheck.Instance.MonsterCheckInjured2D(MeController, skillVo, effectPosition, _selfTransform.position,
                                                                    MeController.Me.CurFaceDire, (MeController.Me.GetVo() as MonsterVo), index);
                if (MeController.Me.DefenceEffect != null)
                {
                    MeController.Me.DefenceEffect.transform.position = Vector3.one * 1000;
                }
                break;

            case DisplayType.Trap:
                DamageCheck.Instance.TrapCheckInjured2D(skillVo, effectPosition,
                                                        MeController.Me.CurFaceDire, (MeController.GetMeByType <TrapDisplay>().BoxCollider2D));
                break;
            }
            if (skillVo.shake && MeController.GetMeVo().Id == MeVo.instance.Id)
            {
                CameraEffectManager.ShakeCamera(0, 0.6f); //增加技能震屏效果
            }
            if (result)
            {
                _checkedTime++;
            }
            return(result);
        }