示例#1
0
        public void SetAction(AnimAction action)
        {
            switch (action)
            {
            case AnimAction.Attack01:
                _animCtrl.Attack01();
                break;

            case AnimAction.Attack02:
                _animCtrl.Attack02();
                break;

            case AnimAction.Attack03:
                _animCtrl.Attack03();
                break;

            case AnimAction.Idle:
                _animCtrl.Idle02();
                break;

            case AnimAction.Die:
                _animCtrl.Die();
                break;

            case AnimAction.Hit:
                _animCtrl.GetHit();
                break;

            default:
                break;
            }
        }
    protected override void Initialize(AnimAction action)
    {
        base.Initialize(action);
        Action           = action;
        mReplay          = false;
        mInitilizeUpdate = true;
        if (Action is AnimActionUseSkill)
        {
            AnimName    = (this.Action as AnimActionUseSkill).AnimName;
            mActionLoop = (Action as AnimActionUseSkill).loop;
        }
        if (this.AnimName == null)
        {
            this.Action.SetFailed();
            this.Release();
        }
        else
        {
            AnimatorStateInfo info = mAnimator.Anim.GetCurrentAnimatorStateInfo((int)AnimationLayer.BaseLayer);
            if (info.IsName(AnimName))
            {
                mAnimator.Anim.Play(AnimName, (int)AnimationLayer.BaseLayer, 0);
            }

            SetTransition(AnimName);
        }
    }
示例#3
0
 public override void Reset()
 {
     LookAtTarget = false;
     Action.SetSuccess();
     Action = null;
     base.Reset();
 }
示例#4
0
    protected override void Initialize(AnimAction action)
    {
        base.Initialize(action);
        Action = action;
        if (Action is AnimActionPlayAnim)
        {
            this.AnimName     = (this.Action as AnimActionPlayAnim).AnimName;
            this.LookAtTarget = false;
        }


        if (this.AnimName == null)
        {
            this.Action.SetFailed();
            this.Action = null;
            this.Release();
        }
        else
        {
            this.RotationOk = true;

            SwitchState(this.AnimName, (int)AnimationLayer.BaseLayer);
            //CrossFade(this.AnimName, 0.1f, PlayMode.StopAll);
            //if (base.Animation[this.AnimName].wrapMode == WrapMode.Loop)
            //{
            //    this.EndOfStateTime = 100000f + Time.timeSinceLevelLoad;
            //}
            //else
            //{
            //    this.EndOfStateTime = (base.Animation[this.AnimName].length + Time.timeSinceLevelLoad) - 0.3f;
            //}
        }
    }
示例#5
0
 public override void OnDeactivate()
 {
     LookAtTarget = false;
     Action.SetSuccess();
     Action = null;
     base.OnDeactivate();
 }
示例#6
0
    protected override void Initialize(AnimAction action)
    {
        base.Initialize(action);
        Action = action;
        if (Action is AnimActionHurt)
        {
            AnimName = (this.Action as AnimActionHurt).AnimName;
        }

        if (action == null)
        {
            return;
        }


        if (AnimName == null)
        {
            if (Action != null)
            {
                Action.SetFailed();
                Action = null;
            }

            Release();
        }
        else
        {
            //if(Owner is Npc)
            //    Debug.Log(AnimName + "被鸡动作");
            SwitchToHurtState(mAnimator.Property.GetStateHash(AnimName), Animator.StringToHash(AnimName));
        }
    }
示例#7
0
    public IEnumerator Play(PlayerController controller, Character character, AnimAction action)
    {
        character.anim.enabled = false;
        controller.canAttack   = false;
        controller.canJump     = false;
        controller.canMove     = false;

        foreach (var frame in frames)
        {
            character.spriteRenderer.sprite = frame.sprite;
            foreach (var hitBox in frame.colliders)
            {
                hitBox.collider2D.enabled = true;
            }

            yield return(new WaitForFixedUpdate());

            foreach (var hitBox in frame.colliders)
            {
                hitBox.collider2D.enabled = false;
            }
        }

        character.anim.enabled = true;
        controller.canAttack   = true;
        controller.canJump     = true;
        controller.canMove     = true;
    }
示例#8
0
    private void SetActions()
    {
        List <string> actionAnimList = new List <string> ();

        for (int i = 0; i < 4; i++)
        {
            actionAnimList.Add("Atk_Melee_0" + i + "a");
        }
        melee = new AnimAction(actionAnimList, 2.12f);

        //		actionAnimList = new List<string> ();
        //		for(int i = 0; i < 4; i++)
        //			actionAnimList.Add ("Atk_Mid_0"+ i + "a");
        //		mid = new AnimAction (actionAnimList, 3.51f);

        actionAnimList = new List <string> ();
        for (int i = 0; i < 4; i++)
        {
            actionAnimList.Add("Atk_Range_0" + i + "a");
        }
        range = new AnimAction(actionAnimList, 6f);

        //		actionAnimList = new List<string> ();
        //		actionAnimList.Add ("Dash_Start");
        //		actionAnimList.Add ("Dash_End");
        //		dash = new AnimAction (actionAnimList);
    }
示例#9
0
    protected override void Initialize(AnimAction action)
    {
        base.Initialize(action);
        Action    = action as AnimActionDeath;
        deathAnim = Action.dieAnim;

        SetTransition(deathAnim);
    }
示例#10
0
 public override void OnDeactivate()
 {
     SetTransition(0);
     mActionLoop  = false;
     LookAtTarget = false;
     Action.SetSuccess();
     Action = null;
     base.OnDeactivate();
 }
示例#11
0
 public void PlayerAnimAction(CharacterEntity character, int stateNameHash)
 {
     if (character)
     {
         AnimAction animAction = new AnimAction();
         animAction.character     = character;
         animAction.stateNameHash = stateNameHash;
         animAction.Execute();
     }
 }
    public void DoAction(AnimActionFactory.E_Type type, Statelayer layer = Statelayer.Normal)
    {
        if (!mHasSetup)
        {
            return;
        }
        AnimAction action = AnimActionFactory.Create(type);

        DoAction(action, layer);
    }
示例#13
0
 public override bool HandleNewAction(AnimAction action)
 {
     if (action is AnimActionDeath)
     {
         action.SetFailed();
         return(true);
     }
     //屏蔽其他一切动作,这里相当于最高级
     return(true);
 }
示例#14
0
 protected void SwitchToNewStage(AnimAction action)
 {
     if (NextAnimState != null)
     {
         CurrentAnimState.Release();
         CurrentAnimState.OnDeactivate();
         CurrentAnimState = NextAnimState;
         CurrentAnimState.OnActivate(action);
         NextAnimState = null;
     }
 }
示例#15
0
 public void PlayerAnimAction(CharacterEntity character, int stateNameHash, float normalizedTime)
 {
     if (character)
     {
         AnimAction animAction = new AnimAction();
         animAction.character      = character;
         animAction.stateNameHash  = stateNameHash;
         animAction.isCrossFade    = false;
         animAction.normalizedTime = normalizedTime;
         animAction.Execute();
     }
 }
示例#16
0
    protected override void Initialize(AnimAction action)
    {
        base.Initialize(action);

        mInvalidState = true;
        PlayIdleAnim();

        if (action != null)
        {
            action.SetSuccess();
        }
    }
示例#17
0
        void ExecuteAction(GameObject obj, string failMessage, AnimAction action)
        {
            Animator anim = obj.GetComponent <Animator>();

            if (anim)
            {
                action(anim);
            }
            else
            {
                Debug.LogError(obj.name + " " + failMessage + " but doesn't have an animator.");
            }
        }
示例#18
0
    public override bool HandleNewAction(AnimAction action)
    {
        if (action is AnimActionHurt)
        {
            AnimName = (action as AnimActionHurt).AnimName;
            Action   = action;

            //if (Owner is Npc)
            //    Debug.Log(AnimName + "被鸡动作");

            SwitchToHurtState(mAnimator.Property.GetStateHash(AnimName), Animator.StringToHash(AnimName));
        }
        return(true);
    }
 public void DoAction(AnimAction action, Statelayer layer = MecanimStateController.Statelayer.Normal)
 {
     //if(mOwner is Npc)
     //    Debug.Log(action);
     if (!mHasSetup)
     {
         return;
     }
     if (layer >= Statelayer.Count || action == null)
     {
         return;
     }
     mAnimStates[(uint)layer].DoAction(action);
 }
示例#20
0
    ///
    public override bool HandleNewAction(AnimAction action)
    {
        if (action is AnimActionIdle)
        {
            action.SetFailed();
            return(true);
        }

        if (action is AnimActionUseSkill)
        {
            //if((action as AnimActionUseSkill).AnimName == "xiechi.sheji")
            //{
            //    //Debug.Log("休息-->射击");
            //}
        }

        return(false);
    }
示例#21
0
    public override bool HandleNewAction(AnimAction action)
    {
        if ((action is AnimActionPlayAnim) && (this.Action != null))
        {
            if ((action as AnimActionPlayAnim).AnimName == AnimName)
            {
                mReplay = true;
            }
            else
            {
                AnimName = (action as AnimActionPlayAnim).AnimName;
                mReplay  = false;
            }

            action.SetFailed();
            return(true);
        }
        return(false);
    }
示例#22
0
 public override bool HandleNewAction(AnimAction action)
 {
     if (action is AnimActionMove)
     {
         if (Action != null)
         {
             Action.SetSuccess();
         }
         SetFinished(false);
         Initialize(action);
         return(true);
     }
     if (action is AnimActionIdle)
     {
         action.SetFailed();
         SetFinished(true);
         return(true);
     }
     return(false);
 }
示例#23
0
 public bool DoAction(AnimAction action)
 {
     if (CurrentAnimState.HandleNewAction(action))
     {
         /*
          * 当前状态处理了该行为
          */
         NextAnimState = null;
         return(true);
     }
     if (AnimStates.ContainsKey(action.Type))
     {
         /*
          * 切换到该行为对应的状态
          */
         NextAnimState = AnimStates[action.Type];
         SwitchToNewStage(action);
         return(true);
     }
     return(false);
 }
示例#24
0
    public override bool HandleNewAction(AnimAction action)
    {
        if ((action is AnimActionUseSkill) && (this.Action != null))
        {
            action.SetFailed();

            //Debug.Log("当前" + AnimName + "目标" + (action as AnimActionUseSkill).AnimName);
            if ((action as AnimActionUseSkill).AnimName == AnimName)
            {
                mReplay = true;
            }
            else
            {
                AnimName = (action as AnimActionUseSkill).AnimName;

                SetTransition(AnimName);
            }

            SetFinished(false);
            mActionLoop = (action as AnimActionUseSkill).loop;
            return(true);
        }

        if (action is AnimActionDeath)
        {
            //如果是死亡动作,立刻死亡
            action.SetSuccess();
            return(false);
        }

        if (action is AnimActionMove)
        {
            action.SetFailed();
            //移动不能打断技能
            return(true);
        }

        return(false);
    }
示例#25
0
 protected virtual void Initialize(AnimAction action)
 {
 }
示例#26
0
 /// <summary>
 /// 处理新行为的接收
 /// </summary>
 /// <param name="action"></param>
 /// <returns></returns>
 public virtual bool HandleNewAction(AnimAction action)
 {
     return(false);
 }
示例#27
0
 public virtual void OnActivate(AnimAction action)
 {
     SetFinished(false);
     Initialize(action);
 }
示例#28
0
 public override void OnActivate(AnimAction action)
 {
     base.OnActivate(action);
 }
示例#29
0
 public static void Return(AnimAction action)
 {
     action.SetUnused();
     m_UnusedActions[(int)action.Type].Enqueue(action);
 }
示例#30
0
 protected override void Initialize(AnimAction action)
 {
     base.Initialize(action);
     Action = action as AnimActionMove;
 }