private void TryToUseSkill(ActionDisplay nearestEnemy) { SkillController skillController = MeController.SkillController; Vector3 mePos = MeController.transform.position; Vector3 enemyPos = nearestEnemy.Controller.transform.position; if (MeController.StatuController.CurrentStatu == Status.IDLE) { int dir = mePos.x < enemyPos.x ? Directions.Right : Directions.Left; //朝向最近的敌人 MeController.Me.ChangeDire(dir); } for (int i = SkillController.Skill1; i <= SkillController.Skill4; i++) { if (skillController.LearnedSkillList[i] == 0) { continue; //已学会的技能列表 } if (skillController.IsSkillCdReady(i)) { SysSkillBaseVo skillVo = BaseDataMgr.instance.GetSysSkillBaseVo(skillController.LearnedSkillList[i]); if (DamageCheck.Instance.IsSkillCovered(skillVo, mePos, mePos, nearestEnemy.Controller.transform.position, MeController.Me.CurDire, (MeController.Me as ActionDisplay).BoxCollider2D, nearestEnemy.BoxCollider2D)) { skillController.RequestUseSkill(i); // 请求使用技能 break; } } } }
//获得目标特效 private string GetTargetEffectId(uint skillId, int index, bool isBullet) { SysSkillBaseVo skillVo = BaseDataMgr.instance.GetSysSkillBaseVo(skillId); if (null == skillVo) { Log.info(this, "SkillBaseVo表不存在id为" + skillId + "的技能"); return(null); } SysSkillActionVo actionVo = BaseDataMgr.instance.GetSysSkillActionVo(skillVo.skill_group); if (null == actionVo) { Log.info(this, "Action表不存在id为" + skillVo.skill_group + "的技能组"); return(null); } string[] effectIds = StringUtils.GetValueListFromString(actionVo.tar_eff); if (index < effectIds.Length) { if (isBullet) { return(effectIds[index]); } int randomIndex = UnityEngine.Random.Range(0, effectIds.Length); return(effectIds[randomIndex]); } return(string.Empty); }
private static SysSkillBaseVo[][] DefaultSkill = new SysSkillBaseVo[6][]; //主动和被动技能的默认配置 职业-主动-被动-技能位置 public static void InitConfig() { var skillBaseVos = BaseDataMgr.instance.GetDicByType <SysSkillBaseVo>().Values; SysSkillBaseVo[] defaut1 = new SysSkillBaseVo[12]; SysSkillBaseVo[] defaut2 = new SysSkillBaseVo[12]; SysSkillBaseVo[] defaut3 = new SysSkillBaseVo[12]; SysSkillBaseVo[] defaut4 = new SysSkillBaseVo[12]; SysSkillBaseVo[] defaut5 = new SysSkillBaseVo[12]; SysSkillBaseVo[] defaut6 = new SysSkillBaseVo[12]; DefaultSkill[0] = defaut1; DefaultSkill[1] = defaut2; DefaultSkill[2] = defaut3; DefaultSkill[3] = defaut4; DefaultSkill[4] = defaut5; DefaultSkill[5] = defaut6; foreach (SysSkillBaseVo skill in skillBaseVos) { if (skill.job != 0) //主角技能 { if (skill.skill_lvl == 0 && skill.next != 0) //初始技能 { int active = 0; if (skill.active) { active = 1; } DefaultSkill[(skill.job - 1) * 2 + 1 - active][skill.position - 1] = skill; } } } }
/// <summary> /// 获取当前职业的默认技能 /// </summary> /// <param name="carser">职业类型</param> /// <returns>当前职业</returns> private List <SysSkillBaseVo> GetDefaultSkills(int carser) { List <SysSkillBaseVo> defaultSkill = new List <SysSkillBaseVo>(); Dictionary <uint, object> skillDict = BaseDataMgr.instance.GetDicByType <SysSkillBaseVo>(); foreach (SysSkillBaseVo skill in skillDict.Values) { if (skill.position > 0 && skill.position <= 8 && defaultSkill[skill.position - 1] == null) { if (skill.active && skill.pre == 0 && skill.skill_lvl == 0 && skill.job == carser) { defaultSkill[skill.position - 1] = skill; } else if (!skill.active && skill.skill_lvl == 0 && skill.job == carser) { //前置技能为0 if (skill.pre == 0) { defaultSkill[skill.position - 1] = skill; } else { //前置技能为某个主动技能 SysSkillBaseVo preskill = BaseDataMgr.instance.GetDataById <SysSkillBaseVo>((uint)skill.pre); if (preskill.active) { defaultSkill[skill.position - 1] = skill; } } } } } return(defaultSkill); }
public void UseSkillById(uint skillId) { SysSkillBaseVo skillVo = BaseDataMgr.instance.GetSysSkillBaseVo(skillId); if (skillVo == null) { Log.debug(this, "SkillBase表不存在id为" + skillId + "的技能"); return; } _currentSkillVo = skillVo; var actionVo = BaseDataMgr.instance.GetDataByTypeAndId <SysSkillActionVo>(BaseDataConst.SYS_SKILL_ACTION_VO, skillVo.skill_group); if (actionVo == null) { Log.debug(this, "Action表不存在id为" + skillVo.skill_group + "的技能组"); return; } _currentActionVo = actionVo; MeController.StatuController.SetStatu(actionVo.action_id); ShowSkillEffect(actionVo, skillVo); if (skillVo.need_keep) { MeController.GetMeVo().NeedKeep = true; } if (MeController.Me.Type == DisplayType.PET) { MeController.TalentSkillController.UseTalentSkill(); } }
/// <summary> /// 播放技能音效 /// </summary> /// <param name="skillVo">技能</param> /// <param name="result">是否命中</param> private void PlaySkillSound(SysSkillBaseVo skillVo, bool result) { if (result) { if (StringUtils.IsValidConfigParam(skillVo.sound_hit)) { SoundMgr.Instance.PlaySkillAudio(GetRandSound(skillVo.sound_hit)); } } else { if (StringUtils.IsValidConfigParam(skillVo.sound_id)) { SoundMgr.Instance.PlaySkillAudio(GetRandSound(skillVo.sound_id), GetSkillDelay((uint)skillVo.id)); //剑士普通攻击3 if (SkillConst.Sword_Attack3_ID == skillVo.id) { SoundMgr.Instance.PlaySkillAudio(GetRandSound(skillVo.sound_id), 0.17f); } //刺客普通攻击3 else if (SkillConst.Assassin_Attack3_ID == skillVo.id) { SoundMgr.Instance.PlaySkillAudio(GetRandSound(skillVo.sound_id), 0.27f); } } } }
private void OnUpgradeClick(GameObject obj) { if (currentSkill != null) { if (currentSkill.next != 0) { SysSkillBaseVo nextSkill = BaseDataMgr.instance.GetDataById <SysSkillBaseVo>((uint)currentSkill.next); if (!SkillViewLogic.IsLevelEnough(nextSkill)) { MessageManager.Show("角色等级不足,请升级主角等级到" + nextSkill.lvl + "级!"); } else if (!SkillViewLogic.IsSkillPointEnough(nextSkill)) { MessageManager.Show("灵魂点不足!"); } else if (!SkillViewLogic.IsPreSkillEnough(nextSkill)) { SysSkillBaseVo preSkill = BaseDataMgr.instance.GetDataById <SysSkillBaseVo>((uint)nextSkill.pre); MessageManager.Show("请先学习技能 " + preSkill.name + " 到 " + preSkill.skill_lvl + " 级"); } else { Singleton <SkillControl> .Instance.LearnSkill((uint)currentSkill.id); } } else { MessageManager.Show("当前技能已经满级"); } } }
/// <summary> /// 设置全部的技能信息 /// </summary> private void SetAllSkillInfo() { InitSkillObjs(); bool active = currentUIToggel == zdSkill; if (active) { NGUITools.FindChild(bdSkill.gameObject, "tips").SetActive(Singleton <SkillMode> .Instance.IfShowTips(false)); NGUITools.FindChild(zdSkill.gameObject, "tips").SetActive(false); } else { NGUITools.FindChild(zdSkill.gameObject, "tips").SetActive(Singleton <SkillMode> .Instance.IfShowTips(true)); NGUITools.FindChild(bdSkill.gameObject, "tips").SetActive(false); } List <SysSkillBaseVo> skills = Singleton <SkillMode> .Instance.CurrentSkills(active); for (int i = 0; i < skills.Count; i++) { SysSkillBaseVo skill = skills[i]; if (skills[i] != null) { GameObject skillObj = skillList[i]; skillObj.name = skill.id.ToString(); SkillState state = SkillViewLogic.GetSkillState(skill); NGUITools.FindInChild <UISprite>(skillObj, "icon").spriteName = skill.icon.ToString(); if (state == SkillState.Learn) //学习状态-置灰 { UIUtils.ChangeGrayShader(NGUITools.FindInChild <UISprite>(skillObj, "icon"), 23); } else { NGUITools.FindChild(skillObj, "lvl").SetActive(true); NGUITools.FindInChild <UILabel>(skillObj, "lvl").text = "Lv." + skill.skill_lvl; UIUtils.ChangeNormalShader(NGUITools.FindInChild <UISprite>(skillObj, "icon"), 22); } if (state != SkillState.Max) { SysSkillBaseVo nextSkill = BaseDataMgr.instance.GetDataById <SysSkillBaseVo>((uint)skill.next); if (SkillViewLogic.IsConditionEnough(nextSkill)) { NGUITools.FindChild(skillObj, "tips").SetActive(true); } } if (currentSkill != null && currentSkill.position == skills[i].position && currentSkill.group == skills[i].group) { OnSkillClick(skillObj); } } } if (currentSkill == null) { OnSkillClick(skillList[0]); } SetSkillsPosInfo(); SetGuideButton(); CheckGuide(); }
public bool TrapColliderCheckInjured2D(SysSkillBaseVo skillVo, Vector3 excutePos, int dir, BoxCollider2D boxCollider2D, List <ActionDisplay> lastAttackedActionDisplay, bool isSend = false) { if (AppMap.Instance.me.GetVo().CurHp <= 0) { lastAttackedActionDisplay.Clear(); return(false); } Vector3 target = AppMap.Instance.me.Controller.transform.position; //敌方位置 bool isDodge = false; //是否闪避 bool isCrit = false; //是否暴击 bool isParry = false; //是否格挡 if (IsTrapSkillCovered(boxCollider2D, AppMap.Instance.me.BoxCollider2D)) { if (!isSend) { if (lastAttackedActionDisplay.Contains(AppMap.Instance.me)) { return(false); } var meVo = AppMap.Instance.me.GetMeVoByType <PlayerVo>(); if (meVo != null && (meVo.IsUnbeatable || AppMap.Instance.me.Controller.StatuController.CurrentStatu == Status.ROLL)) { return(false); //无敌状态不播放受击 } var attackVo = new ActionVo { SkillId = skillVo.unikey, ActionType = Actions.INJURED, SkillUsePoint = excutePos, Target = AppMap.Instance.me.GoBase }; //动作vo meControler.BeAttackedController.BeAttacked(attackVo); int cutHp = skillVo.value; //伤害值 if (meVo.CurHp <= (uint)cutHp) { meVo.CurHp = 0; attackVo = new ActionVo(); attackVo.ActionType = Actions.DEATH; meControler.AttackController.AddAttackList(attackVo, true); } else { meVo.CurHp -= (uint)cutHp; } lastAttackedActionDisplay.Add(AppMap.Instance.me); PlayerAiController.AddHudView(isDodge, isCrit, isParry, cutHp, (int)meVo.CurHp, Color.red); //冒血直接冒 return(true); } } lastAttackedActionDisplay.Clear(); return(false); }
public const int TargetEnemy = 3; //作用于敌人 private void Start() { Target = MeController.GetMeVoByType <PetVo>().MasterVo.Controller.transform; _idleTime = 0; var petVo = MeController.GetMeVoByType <PetVo>(); _talentSkillVo = BaseDataMgr.instance.GetSysSkillBaseVo(petVo.SkillId); _meTransform = transform; }
/// <summary> /// 技能是否已经学习 /// </summary> /// <param name="skillId">技能ID</param> /// <returns></returns> public bool IsSkillLearned(uint skillId) { if (skillId == 0) { return(true); } SysSkillBaseVo skill = BaseDataMgr.instance.GetDataById <SysSkillBaseVo>(skillId); if (skill == null) { Log.error(this, "前置技能值为空" + skillId); } if (skill.active) { foreach (SysSkillBaseVo skillLearn in zdSkills) { if (skillLearn != null) { if (skillLearn.id == skillId) { return(true); } if (skill.group == skillLearn.group) { if (skill.skill_lvl <= skillLearn.skill_lvl) { return(true); } } } } } else { foreach (SysSkillBaseVo skillLearn in bdSkills) { if (skillLearn != null) { if (skillLearn.id == skillId) { return(true); } if (skill.group == skillLearn.group) { if (skill.skill_lvl <= skillLearn.skill_lvl) { return(true); } } } } } return(false); }
private SkillState skillState = SkillState.Upgrade; //状态,学习,升级,进阶 public void OpenView(SysSkillBaseVo skillVo, GameObject obj) { if (base.gameObject == null) { base.gameObject = obj; Init(); } base.gameObject.SetActive(true); SetSkillDetailInfo(skillVo); }
//获得击中目标音效 private string GetSoundHitPathByAttack(uint skillId) { SysSkillBaseVo skillVo = BaseDataMgr.instance.GetSysSkillBaseVo(skillId); if (null == skillVo) { Log.info(this, "SkillBaseVo表不存在id为" + skillId + "的技能"); return(null); } return(skillVo.sound_hit.ToString(CultureInfo.InvariantCulture)); }
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; }
// Use this for initialization private void Start() { ActionControler.StatuController.SetStatu(Status.IDLE); TrapMeDisplay = ActionControler.Me as TrapDisplay; ThisTrapVo = TrapMeDisplay.GetTrapVo(); _skillBaseVo = BaseDataMgr.instance.GetSysSkillBaseVo(uint.Parse(StringUtils.GetValueListFromString(ThisTrapVo.SysTrapVo.SkillIds)[0])); LastAttackedActionDisplay = new List <ActionDisplay>(); _startTime = 0; Vector3 pos = transform.position; EffectMgr.Instance.CreateMainEffect(EffectId.Main_CylinderStandby, pos, true, null, false); }
/// <summary> /// 获取技能攻击后的目标表现Vo /// </summary> /// <param name="skillVo"></param> /// <param name="excutePos"></param> /// <param name="dir"></param> /// <param name="enemyDisplay"></param> /// <param name="checkedTime"></param> /// <param name="moveRatio"></param> /// <returns></returns> private ActionVo GetSkillActionVo(SysSkillBaseVo skillVo, Vector3 excutePos, int dir, ActionDisplay enemyDisplay, int index, int checkedTime = 0, float moveRatio = 1) { var attackVo = new ActionVo { ActionType = Actions.INJURED, SkillUsePoint = excutePos, SkillId = skillVo.unikey }; /* * Vector3 moveToPoint = enemyDisplay.GoBase.transform.position; * if (skillVo.target_dir != 2 && checkedTime == 0) * { * if (dir == Directions.Left) * { * moveToPoint.x -= skillVo.back_dis*0.001f*moveRatio; * } * else * { * moveToPoint.x += skillVo.back_dis*0.001f*moveRatio; * } * } * if (MeVo.instance.mapId != MapTypeConst.WORLD_BOSS) //世界BOSS的位置不受影响 * { * moveToPoint.x = AppMap.Instance.mapParser.GetFinalMonsterX(moveToPoint.x); //限制怪物被攻击后不要出屏幕 * } * moveToPoint.y = enemyDisplay.GoBase.transform.position.y; //后退时保持高度不变 * attackVo.HurtDestination = moveToPoint;*/ attackVo.FloatingValue = skillVo.Floating_Value; if (MeVo.instance.mapId != MapTypeConst.WORLD_BOSS) //世界BOSS的位置不受影响 { //获取当前攻击点的攻击数据 int[][] atkList = StringUtils.Get2DArrayStringToInt(skillVo.Per_Atk_Data); if (atkList != null) { if (index < atkList.Length) { attackVo.Velocity_Origin = atkList[index][Actions.VELOCITY_ORIGIN] * 0.001f; attackVo.Angle = atkList[index][Actions.ANGLE]; attackVo.ProtectValue = atkList[index][Actions.PROTECTVALUE]; attackVo.ForceFeedBack = atkList[index][Actions.FORCEFEEDBACK]; attackVo.HitRecover = atkList[index][Actions.HITRECOVER]; attackVo.HurtAnimation = atkList[index][Actions.HURTANIMATION]; attackVo.FaceDirection = (dir == Directions.Left ? -1 : 1); } } } return(attackVo); }
public void InitTotalCdTime() { for (int i = 0; i < LearnedSkillList.Count; i++) { SysSkillBaseVo skillVo = BaseDataMgr.instance.GetSysSkillBaseVo(LearnedSkillList[i]); if (skillVo == null) { continue; } TotalCdTimes[i] = skillVo.cd * 0.001f; SkillMpCost[i] = skillVo.need_value; } }
/// <summary> /// 施放技能时开始控制单位移动 /// </summary> public void SkillStartCtrlMove() { print("SkillStartCtrlMove"); if (!MeController.Me.IsUsing) { return; } SysSkillBaseVo skillVo = CurrentSkillVo; int[] list = StringUtils.GetStringToInt(skillVo.Move_During_Skilling); if (list.Length > 0) { var meVo = MeController.GetMeVo(); meVo.MoveSpeedDuringSkill = list[Actions.CTRL_MOVE_SPEED] * 0.001f; meVo.CanCtrlMoveDuringSkill = true; } }
public bool IfShowTips(bool active) { List <SysSkillBaseVo> skills = CurrentSkills(active); foreach (SysSkillBaseVo skill in skills) { if (skill != null && skill.next != 0) { SysSkillBaseVo nextSkill = BaseDataMgr.instance.GetDataById <SysSkillBaseVo>((uint)skill.next); if (SkillViewLogic.IsConditionEnough(nextSkill)) { return(true); } } } return(false); }
private void SetPetProperty(PPet pet) { PetVo petVo = Singleton <PetMode> .Instance.PetVos[pet.id]; SysPetEvolutionVo petEvo = BaseDataMgr.instance.GetDataById <SysPetEvolutionVo>(pet.star); NGUITools.FindInChild <UILabel>(propetyObj, "growvalue").text = (petEvo.grow / 10000f).ToString(); NGUITools.FindInChild <UILabel>(propetyObj, "hpvalue").text = petVo.Hp.ToString(); NGUITools.FindInChild <UILabel>(propetyObj, "attackvalue").text = petVo.AttPMax.ToString(); NGUITools.FindInChild <UILabel>(propetyObj, "pdvalue").text = petVo.DefP.ToString(); NGUITools.FindInChild <UILabel>(propetyObj, "mdvalue").text = petVo.DefM.ToString(); NGUITools.FindInChild <UILabel>(propetyObj, "decvalue").text = petVo.HurtRe.ToString(); SysPet spet = BaseDataMgr.instance.GetDataById <SysPet>(pet.petId); SysSkillBaseVo skill = BaseDataMgr.instance.GetDataById <SysSkillBaseVo>((uint)spet.unique_skill); NGUITools.FindInChild <UILabel>(propetyObj, "des").text = "天赋技能:" + skill.desc; NGUITools.FindInChild <UILabel>(gameObject, "info/fightvalue").text = petVo.fight.ToString(); }
/// <summary> /// 施放技能时做匀速的突进 /// </summary> /// <param name="index"></param> public void SkillMove(int index) { if (!MeController.Me.IsUsing) { return; } SysSkillBaseVo skillVo = CurrentSkillVo; int[][] list = StringUtils.Get2DArrayStringToInt(skillVo.Move_Data); if (list != null) { var meVo = MeController.GetMeVo(); meVo.MoveDistance = list[index][Actions.MOVE_DISTANCE] * 0.001f; meVo.MoveTime = list[index][Actions.MOVE_TIME] * 0.001f; meVo.MoveDirection = list[index][Actions.MOVE_DIRECTION]; meVo.MoveSpeed = meVo.MoveDistance / meVo.MoveTime; meVo.IsMoving = true; } }
/// <summary> /// 施放技能时做带加速度的突进 /// </summary> /// <param name="index"></param> public void SkillRush(int index) { if (!MeController.Me.IsUsing) { return; } SysSkillBaseVo skillVo = CurrentSkillVo; int[][] list = StringUtils.Get2DArrayStringToInt(skillVo.Rush_Data); if (list != null) { var meVo = MeController.GetMeVo(); meVo.RushSpeed = list[index][Actions.RUSH_VELOCITY] * 0.001f; meVo.Acceleration = list[index][Actions.RUSH_ACCELERATION] * 0.001f; meVo.Distance = list[index][Actions.RUSH_DISTANCE] * 0.001f; meVo.Direction = list[index][Actions.RUSH_DIRECTION]; meVo.IsRush = true; } }
/// <summary> /// 获取当前此技能状态-学习-升级-进化 /// </summary> /// <param name="skillVo"></param> /// <returns></returns> public static SkillState GetSkillState(SysSkillBaseVo skillVo) { if (IsLastLevel(skillVo)) { return(SkillState.Max); } else if (skillVo.skill_lvl == 0) { return(SkillState.Learn); } else if (skillVo.evolve != 0) { return(SkillState.Change); } else { return(SkillState.Upgrade); } }
//技能位置点击 private void OnSkillClick(GameObject obj) { if (!obj.name.Equals("0")) { uint skillId = uint.Parse(obj.name); SysSkillBaseVo skill = BaseDataMgr.instance.GetDataById <SysSkillBaseVo>(skillId); if (!chose.activeSelf || currentSkill != skill) { chose.SetActive(true); chose.transform.localPosition = obj.transform.localPosition; currentSkill = skill; SetSkillInfo(skill); SetSkillPosChoseInfo(); } } else { MessageManager.Show("未开放"); } }
//学习-升级-升阶技能 public void LearnSkill(uint skillId) { MemoryStream mem = new MemoryStream(); SysSkillBaseVo skill = BaseDataMgr.instance.GetDataById <SysSkillBaseVo>(skillId); if (skill.next != 0) { Module_13.write_13_5(mem, skillId, (uint)skill.next); } else if (skill.evolve != 0) { Module_13.write_13_5(mem, skillId, (uint)skill.evolve); } else { return; } AppNet.gameNet.send(mem, 13, 5); }
/// <summary> /// 获取玩家已分配的技能点 /// </summary> /// <returns></returns> private uint GetUsedPoint() { uint usedPoint = 0; foreach (uint skillId in skillsId) { SysSkillBaseVo skill = BaseDataMgr.instance.GetDataById <SysSkillBaseVo>(skillId); if (skill.reset_skillid != 0 && skill.reset_skillid != skill.id) { SysSkillBaseVo preSkill = BaseDataMgr.instance.GetDataById <SysSkillBaseVo>((uint)skill.reset_skillid); do { preSkill = BaseDataMgr.instance.GetDataById <SysSkillBaseVo>((uint)preSkill.next); usedPoint += (uint)preSkill.point; } while (preSkill.id != skill.id); } } return(usedPoint); }
/// <summary> /// 获取当前玩家的全部技能 /// </summary> private List <SysSkillBaseVo> GetPlayerCurrentSkills(int job, bool active) { List <SysSkillBaseVo> defaultSkills; if (skillsId.Count < 24) //默认最多24个技能位 { defaultSkills = SkillViewLogic.GetDefaultSkill(job, active).ToList(); } else { defaultSkills = new List <SysSkillBaseVo>(); } foreach (uint skillid in skillsId) { SysSkillBaseVo skill = BaseDataMgr.instance.GetDataById <SysSkillBaseVo>(skillid); if (skill.active == active) { defaultSkills[skill.position - 1] = skill; } } return(defaultSkills); }
//技能类型切换 private void OnStateChange(bool state) { if (state) { if (UIToggle.current == zdSkill && currentUIToggel != zdSkill) { currentUIToggel = zdSkill; currentSkill = null; SetToggleLable(NGUITools.FindChild(zdSkill.gameObject, "label"), true); SetToggleLable(NGUITools.FindChild(bdSkill.gameObject, "label"), false); SetAllSkillInfo(); } else if (UIToggle.current == bdSkill && currentUIToggel != bdSkill) { currentUIToggel = bdSkill; currentSkill = null; SetToggleLable(NGUITools.FindChild(zdSkill.gameObject, "label"), false); SetToggleLable(NGUITools.FindChild(bdSkill.gameObject, "label"), true); SetAllSkillInfo(); } } }
private void SetSkillsPosInfo() { bool chosed = false; uint[] skillposId = Singleton <SkillMode> .Instance.GetUsedSkill(); for (int i = 0; i < skillPosList.Count; i++) { GameObject pos = skillPosList[i]; uint skillId = skillposId[i]; if (skillId == 0) { NGUITools.FindChild(pos, "icon").SetActive(false); NGUITools.FindChild(pos, "tips").SetActive(true); } else { if (skillId == currentSkill.id) { posChose.transform.localPosition = pos.transform.localPosition; chosed = true; } SysSkillBaseVo skill = BaseDataMgr.instance.GetDataById <SysSkillBaseVo>(skillId); NGUITools.FindChild(pos, "icon").SetActive(true); NGUITools.FindChild(pos, "tips").SetActive(false); NGUITools.FindInChild <UISprite>(pos, "icon").spriteName = skill.icon.ToString(); } } if (chosed) { posChose.SetActive(true); } else { posChose.SetActive(false); } }
/// <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); }