Пример #1
0
    /// <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;
        }
    }
Пример #2
0
 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");
 }
Пример #3
0
 /// <summary>
 ///
 /// </summary>
 void LateUpdate()
 {
     //获取技能指示器类型
     areaType = GetComponent <SkillController>().SkillType;
     //技能启用标识为true才实时更新技能位置
     if (isPressed)
     {
         UpdateElement();
     }
 }
Пример #4
0
 /// <summary>
 /// 程序开始执行的方法(优先级:0)
 /// </summary>
 void Start()
 {
     //实例化技能控制器类
     skill = GetComponent <SkillController>();
     //获取技能指示器类型
     areaType = skill.SkillType;
     //绑定事件
     skill.showSkill += Show;
     skill.moveSkill += Move;
     skill.hideSkill += Hide;
     //初始化技能指示器(添加对应指示器范围类型的Path和Transform)
     InitSkillAreaType();
 }
Пример #5
0
        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);
        }