Exemplo n.º 1
0
    public SkillCasterData clone()
    {
        SkillCasterData skillcastdata = new SkillCasterData();
        skillcastdata.castRole = castRole;
        skillcastdata.beatonRoles = beatonRoles;

        skillcastdata.skilldata = skilldata;

        return skillcastdata;
    }
Exemplo n.º 2
0
 public void SetTargetPos(GameObject targetRole, SkillCasterData skilldata)
 {
     skillcastdata = skilldata;
     tragetfightrole = targetRole.GetComponent<DBaseFightRole>();
     if (tragetfightrole != null)
     startFollow = true;
     //DBaseFightRole role = targetRole.GetComponent<DBaseFightRole>();
   
    // iTween.MoveTo(gameObject, iTween.Hash("position", role.roleModel.transform.position + Vector3.up, "easeType", "easeInOutExpo",  "time",0.7f,"delay", .1, "oncomplete", "showHitMovie"));
 }
Exemplo n.º 3
0
    public void Begin(Vector3?preBeginPos, Vector3?preBeginDir, Vector3?preEndPos, bool isSync, EntityBase target)
    {
        if (_executed == true)
        {
            return;
        }
        _executed = true;
        _timer    = 0;

        SkillPreData preData = new SkillPreData();

        preData.preBeginPos = preBeginPos;
        preData.preBeginDir = preBeginDir;
        preData.preEndPos   = preEndPos;
        SkillCasterData casterData = new SkillCasterData();

        casterData.roleId    = _caster.roleId;
        casterData.roleType  = CONST_ENTITY_TYPE.MAIN_ROLE;
        casterData.oriPos    = _caster.position;
        casterData.oriDir    = _caster.forward;
        casterData.oriCenter = _caster.centerPos;
        SkillTargetData targetData = new SkillTargetData();

        if (target != null)
        {
            targetData.roleId    = target.roleId;
            targetData.oriPos    = target.position;
            targetData.oriCenter = target.centerPos;
        }
        for (int i = 0; i < _spList.Count; ++i)
        {
            SkillProgress sp = _spList[i];
            sp.SetSkillProgressData(_lv, casterData, preData, targetData, isSync);
        }
        Update(0f);
    }
Exemplo n.º 4
0
    public void showBeatonBySkill(SkillCasterData casterdata)
    {
            DRoleData castRoledata = casterdata.castRole.GetComponent<DBaseFightRole>().roledata;

        //攻击技能才能闪避,如果是 加buff 的 不能闪避
            if (casterdata.skilldata.isAttackSkill() && !FightCalculateTool.checkIsHitted(castRoledata, roledata))
            {
                //闪避了
                showDogeCritEffect(EEffectType.Dodge);
                return;
            }
            if (casterdata != null && casterdata.skilldata != null)
            {
                BeatonData beatdata;
                for (int i = 0; i < casterdata.skilldata.beatonDatas.Count; i++)
                {
                    beatdata = casterdata.skilldata.beatonDatas[i];

                    if(casterdata.skilldata.isAttackSkill())
                        StartCoroutine(beantonBlood(castRoledata, casterdata.skilldata, beatdata.beatonTime));
                    if (isDead)
                        break;
                    StartCoroutine(beatonToBackOrFly(beatdata));
                    if(i==0)
                        StartCoroutine(addBuffByBeaton(casterdata.skilldata, beatdata.beatonTime));
                }
                
                //animatorControl.changeToState(casterdata.skilldata.animatorBeatonClip);
            }
    }
Exemplo n.º 5
0
    //使用技能发动攻击
    public bool useSkill(DSkillBaseData baseSkilldata)
    {
        if (!canUseSkillNow())
            return false;

        if (baseSkilldata != null)
        {
            GameObject firstenemy = FightRoleManager._instance.findAttackEnemy(this, EAttackStragety.EAttackStragety_Nearest, isAttackEnemy(baseSkilldata));

            if (firstenemy != null)
            {
                isCasteringSkill = true;
                casterdata = new SkillCasterData();
                casterdata.castRole = gameObject;
                casterdata.skilldata = baseSkilldata;

                float dist = FightRoleManager._instance.getFightRoleDistance(this, firstenemy.GetComponent<DBaseFightRole>());
                roleModel.transform.LookAt(firstenemy.GetComponent<DBaseFightRole>().roleModel.transform, Vector3.up);

                if (skillManager != null)
                {
                    skillManager.useSkill(baseSkilldata);
                }
                if (dist > DefaultSkillParam.PathFindingDist)//当距离大于可自动寻路距离,不作攻击,只表现一下施放动作和特性
                {
                    StartCoroutine(showAttackMov());

                }
                else if (dist > baseSkilldata.minAttackDist)
                {
                    StartCoroutine(gotoEnemy());
                }
                else
                {
                    //roleModel.transform.LookAt(firstenemy.transform, Vector3.up);
                    if (casterdata.skilldata.isNeedAppoint)
                    {
                        skillstep = ESkillStep.Selecting;
                    }
                    else
                    {
                        if (casterdata.skilldata.isUseMoveEff)
                            StartCoroutine(ShowMoveEffectToEnemy(firstenemy));
                        else
                            StartCoroutine(showBeantonMov());
                        if (casterdata.skilldata.isShakeCamera)
                            Invoke("shakeCamera", casterdata.skilldata.shakeTime);
                        StartCoroutine(showAttackMov());
                    }
                }
            }
            else
            {
                if (skillManager != null)
                {
                    skillManager.useSkill(baseSkilldata);
                }
                isCasteringSkill = true;
                casterdata = new SkillCasterData();
                casterdata.castRole = gameObject;
                casterdata.skilldata = baseSkilldata;
                StartCoroutine(showAttackMov());
                return true;
            }
        }
        return false;

    }
Exemplo n.º 6
0
 public void SetTargetPos(Vector3 targetpos, SkillCasterData skilldata)
 {
     skillcastdata = skilldata;
     iTween.MoveTo(gameObject, iTween.Hash("position", targetpos, "easeType", "easeInOutExpo", "delay", .1, "time",0.5f,"oncomplete","destroyeffect"));
 }