/// <summary> ///技能开始检测,根据技能类型设置触发器大小和位置 /// </summary> /// <param name="checkMode">技能类型</param> void SkillCheckStart(SkillAreaType checkMode) { switch (checkMode) { case SkillAreaType.OuterCircle: Trigers[0].gameObject.SetActive(true); Trigers[0].position = transform.position; Trigers[0].localScale = new Vector3(SkillAreaParam.outerRadius, 0, SkillAreaParam.outerRadius); break; case SkillAreaType.OuterCircle_InnerCircle: Trigers[0].gameObject.SetActive(true); Trigers[0].localScale = new Vector3(SkillAreaParam.innerRadius, 0, SkillAreaParam.innerRadius); Trigers[0].position = SkillAreaParam.deltaVec + transform.position; break; case SkillAreaType.OuterCircle_InnerSector: Trigers[0].gameObject.SetActive(true); Trigers[0].position = transform.position; Trigers[0].localScale = new Vector3(SkillAreaParam.outerRadius, 0, SkillAreaParam.outerRadius); break; case SkillAreaType.OuterCircle_InnerCube: Trigers[1].gameObject.SetActive(true); BoxCollider boxCol = Trigers[1].GetComponent <BoxCollider>(); boxCol.size = new Vector3(1, 1, SkillAreaParam.outerRadius / 2); boxCol.center = new Vector3(0, 0, SkillAreaParam.outerRadius / 4); Trigers[0].localScale = new Vector3(SkillAreaParam.cubeWidth, 1, 1); Trigers[1].LookAt(SkillAreaParam.deltaVec + transform.position, transform.up); break; } }
public override void Read(XmlNode item) { skillAreaType = (SkillAreaType)GetInt(item, "skillAreaType"); skillEffectType = (SkillEffectType)GetInt(item, "skillEffectType"); skillAdditionType = (SkillAdditionType)GetInt(item, "skillAdditionType"); id = GetInt(item, "id"); skillName = GetString(item, "skillName"); range = GetInt(item, "range"); des = GetString(item, "des"); }
/// <summary> /// /// </summary> void LateUpdate() { //获取技能指示器类型 areaType = GetComponent <SkillController>().SkillType; //技能启用标识为true才实时更新技能位置 if (isPressed) { UpdateElement(); } }
/// <summary> /// 程序开始执行的方法(优先级:0) /// </summary> void Start() { //实例化技能控制器类 skill = GetComponent <SkillController>(); //获取技能指示器类型 areaType = skill.SkillType; //绑定事件 skill.showSkill += Show; skill.moveSkill += Move; skill.hideSkill += Hide; //初始化技能指示器(添加对应指示器范围类型的Path和Transform) InitSkillAreaType(); }
protected override int OnUse(int targetUnitId, short skillAngle, int skillParam1) { int effectId; SkillAreaType areaType = (SkillAreaType)mSkillConfig.targetInfo.param1; switch (areaType) { case SkillAreaType.Line: effectId = SkillEffectManager.Instance.CreateAreaEffect(mUnit.Data.camp, mUnit.Position, mSkillConfig.effectId, skillAngle, mSkillConfig.targetInfo.param2, mSkillConfig.targetInfo.param3); break; case SkillAreaType.Circle: effectId = SkillEffectManager.Instance.CreateAreaEffect(mUnit.Data.camp, IntVector2.MoveAngle(mUnit.Position, skillAngle, (short)(new IntegerFloat(skillParam1) * mSkillConfig.distance).ToInt()), mSkillConfig.effectId, skillAngle, mSkillConfig.targetInfo.param2, 0); break; default: throw new System.NotImplementedException("未实现的技能区域类型 " + areaType); } return(effectId); }