Example #1
0
    /// <summary>
    /// 测试一下攻击碰撞盒检测
    /// </summary>
    /// <param name="caster"></param>
    /// <param name="atkData"></param>
    public static void attack(BaseEntity caster, AttackData atkData)
    {
        var  ier = EntityMgr.getPool().GetEnumerator();
        long uid = caster.UID;

        while (ier.MoveNext())
        {
            if (ier.Current.Value.UID != uid)
            {
                if (Physics3D.isCollision(atkData.hitBox, ier.Current.Value.HitBox))
                {
                    FSMArgs args = Pool.PoolMgr.Instance.getData <FSMArgs>();

                    HitData data = Pool.PoolMgr.Instance.getData <HitData>();
                    Vector2 dir  = caster.DyBox.centerX - ier.Current.Value.DyBox.centerX > 0 ? Vector2.left : Vector2.right;
                    data.attackDir  = dir;
                    data.duration   = 4;
                    data.startFrame = FrameMgr.NowFrame;
                    data.repelValue = 0.5f;
                    args.hitData    = data;

                    ier.Current.Value.transFsm(FSM_Flag.StandHit, args);
                }
            }
        }
    }
 public virtual bool onChangeState(StateType type, FSMArgs args = null)
 {
     if (this.fsm != null)
     {
         SType = type;
         return(this.fsm.onChangeState(type, args));
     }
     return(false);
 }
Example #3
0
 public override void onEnter(FSMArgs args = null)
 {
     hitData = args.hitData;
     if (hitData == null)
     {
         Agent.transFsm(FSM_Flag.Idle, null, true);
     }
     //强转到站立受击
     Agent.transFsm(FSM_Flag.StandHit, args);
 }
Example #4
0
    public override void onEnter(FSMArgs args = null)
    {
        hitData = args.hitData;
        int    animIndex = hitData.hitAnimIndex;
        string animName  = "hit";

        Agent.playAnim(animName);
        //回收一下
        Pool.PoolMgr.Instance.recyleData(args);
    }
Example #5
0
 /// <summary>
 /// 接口 转换状态
 /// </summary>
 /// <param name="flag"></param>
 /// <param name="args"></param>
 public void transFsm(FSM_Flag flag, FSMArgs args = null, bool forceTrans = false)
 {
     if (this.fsm != null)
     {
         bool isSuccess = this.fsm.transFsm(flag, args, forceTrans);
         if (isSuccess)
         {
             Flag = flag;
         }
     }
 }
    public virtual void onReleaseSkill(int skillId, FSMArgs args = null)
    {
        StateType stateType = StateType.die;

        if (args != null && args.skillData != null)
        {
            stateType = args.skillData.fsmStateType;
        }
        bool canChangeState = isCanChangeState(stateType);

        // Debug.LogError("释放技能 id == " + skillId + "  stateType : " + stateType.ToString());
        if (MySkill.releaseSkill(skillId, canChangeState) && canChangeState)
        {
            onChangeState(stateType, args);
            onReleaseSkillSuccess(skillId);
        }
    }
Example #7
0
    //切换状态
    public bool onChangeState(StateType type, FSMArgs args)
    {
        bool isCan = true;

        if (currState != null)
        {
            isCan = currState.isCanChangeTo(type);
        }
        if (isCan)
        {
            if (dictStates.ContainsKey(type))
            {
                nextState = dictStates[type];
                nextState.setArgs(args);
            }
        }
        return(isCan);
    }
Example #8
0
    /// <summary>
    /// 转换状态
    /// </summary>
    /// <param name="flag"></param>
    /// <param name="args"></param>
    public bool transFsm(FSM_Flag flag, FSMArgs args = null, bool forceTrans = false)
    {
        bool isSuccess = false;

        if (pool.ContainsKey(flag))
        {
            if (currState == null || forceTrans || currState.allow(flag))
            {
                if (currState != null)
                {
                    currState.onExit();
                }
                currState = pool[flag];
                currState.onEnter(args);
                isSuccess = true;
            }
        }
        return(isSuccess);
    }
Example #9
0
    //当接受到释放技能请求
    private void onCastSkill(Message msg)
    {
        int skillId = (int)msg["skillId"];

        if (dictSkillData == null)
        {
            initData();
        }
        SkillItemUIData skillData = null;

        if (dictSkillData.ContainsKey(skillId))
        {
            skillData = dictSkillData[skillId];
        }

        EntityMainPlayer role = EntityMgr.Instance.getMainPlayer() as EntityMainPlayer;

        if (role != null)
        {
            if (skillData != null)
            {
                if (skillData.skillModeType == SkillModeType.baseSkill)
                {
                    MessageCenter.Instance.SendMessage(MsgCmd.On_Combo_Release_Success, this);
                    if (role.isCanChangeState(StateType.baseCombo))
                    {
                        FSMArgs args = new FSMArgs();
                        args.comboSkills = getComboSkills();
                        role.onChangeState(StateType.baseCombo, args);
                    }
                }
                else
                {
                    FSMArgs args = new FSMArgs();
                    args.skillData = skillData;
                    role.onReleaseSkill(skillId, args);
                }
            }
        }
    }
Example #10
0
 public override void onEnter(FSMArgs args = null)
 {
     this.Agent.playAnim("idle", true);
 }
Example #11
0
 public virtual void onEnter(FSMArgs args = null)
 {
 }
Example #12
0
 public override void onEnter(FSMArgs args = null)
 {
     Agent.modifyCompleteEvent(true);
     Agent.playAnim("shoot");
 }
Example #13
0
 public override void onEnter(FSMArgs args = null)
 {
     Agent.modifyCompleteEvent(false);
     this.Agent.playAnim("jump old", true);
 }
Example #14
0
 public virtual void setArgs(FSMArgs args)
 {
     this.args = args;
 }