Пример #1
0
        // OnStateEnter is called when a transition starts and the state machine starts to evaluate this state
        override public void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
        {
            base.OnStateEnter(animator, stateInfo, layerIndex);
            RoleController.Speed = new Vector3(RoleController.Speed.x, RoleController.JumpSpeed, RoleController.Speed.z);
            if (RoleController.IsGrounded())
            {
                RoleController.currjumpTimes = 0;
                if (RoleController.animatorParams.ContainsKey("no_jump"))
                {
                    animator.SetBool("no_jump", false);
                }
            }
            //
            RoleController.currjumpTimes++;
            if (RoleController.currjumpTimes >= RoleController.jumpTimes)
            {
                if (RoleController.animatorParams.ContainsKey("no_jump"))
                {
                    animator.SetBool("no_jump", true);
                }
            }

            #region //二段跳 2019.3.29

            animator.SetInteger("curr_jump_times", RoleController.currjumpTimes);
            #endregion
        }
Пример #2
0
        private IEnumerator MoveTo()
        {
            while (!selfRoleController.IsGrounded())
            {
                yield return(null);
            }

            var selfPos   = selfRoleController.transform.position;
            var targetPos = targetRoleController.transform.position;

            var path = roleNavMeshAgent.CalculPath(targetPos);

            if (path.Length <= 0)
            {
                Debug.LogError("path为空!");
            }

            for (int currIndex = 1; currIndex < path.Length; currIndex++)
            {
                var         position = path[currIndex];
                IEnumerator moveTo   = roleBehaviorTree.MoveTo(position, selfRoleController.GetSpeedByMoveState(MoveState.Walk));

                while (true)
                {
                    if (moveTo.MoveNext())
                    {
                        yield return(CoroutineStatus.Running);
                    }
                    else
                    {
                        break;
                    }
                }
            }
        }
Пример #3
0
    public override void OnStateEnter(Animator animator, AnimatorStateInfo animatorStateInfo, int layerIndex)
    {
        lazyInit(animator);

        // 设置动画状态机的结束时间 add by TangJian 2019/5/13 18:36
        if (StateDuration >= 0)
        {
            roleController.SkeletonAnimator.SetStateTime(animatorStateInfo.fullPathHash, StateDuration);
        }

        if (roleController.animatorParams.ContainsKey("state_running_percent"))
        {
            animator.SetFloat("state_running_percent", animatorStateInfo.normalizedTime * 100);
        }

        animator.SetBool("Alt", false);

        animator.SetBool("action1", false);

        animator.SetBool("action2", false);

        animator.SetBool("action3", false);

        animator.SetBool("action4", false);

        if (roleController.animatorParams.ContainsKey("KeyBoard1"))
        {
            animator.SetBool("KeyBoard1", false);
        }
        if (roleController.animatorParams.ContainsKey("KeyBoard2"))
        {
            animator.SetBool("KeyBoard2", false);
        }
        if (roleController.animatorParams.ContainsKey("KeyBoard3"))
        {
            animator.SetBool("KeyBoard3", false);
        }


        if (roleController.animatorParams.ContainsKey("action5"))
        {
            animator.SetBool("action5", false);
        }
        if (roleController.animatorParams.ContainsKey("action6"))
        {
            animator.SetBool("action6", false);
        }
        if (roleController.animatorParams.ContainsKey("action7"))
        {
            animator.SetBool("action7", false);
        }
        if (roleController.animatorParams.ContainsKey("action-skill"))
        {
            animator.SetBool("action-skill", false);
        }

        if (roleController.animatorParams.ContainsKey("climb_begin"))
        {
            animator.SetBool("climb_begin", false);
        }

        if (roleController.animatorParams.ContainsKey("climb_drop"))
        {
            animator.SetBool("climb_drop", false);
        }

        if (roleController.animatorParams.ContainsKey("pickup"))
        {
            animator.SetBool("pickup", false);
        }

        if (roleController.animatorParams.ContainsKey("broken"))
        {
            animator.SetBool("broken", false);
        }

        if (roleController.animatorParams.ContainsKey("renew"))
        {
            animator.SetBool("renew", false);
        }

        if (roleController.animatorParams.ContainsKey("defence_back_hurt"))
        {
            animator.SetBool("defence_back_hurt", false);
        }

        if (roleController.animatorParams.ContainsKey("start_climb_ladder"))
        {
            animator.SetBool("start_climb_ladder", false);
        }

        if (roleController.animatorParams.ContainsKey("climb_ladder_over"))
        {
            animator.SetBool("climb_ladder_over", false);
        }
        if (roleController.animatorParams.ContainsKey("action2_end"))
        {
            animator.SetBool("action2_end", false);
        }

        animator.ResetTrigger("action1_begin");
        animator.ResetTrigger("action2_begin");

        if (roleController.animatorParams.ContainsKey("action1_end"))
        {
            animator.SetBool("action1_end", false);
        }

        if (roleController.animatorParams.ContainsKey("action-skill_end"))
        {
            animator.SetBool("action-skill_end", false);
        }

        if (roleController.animatorParams.ContainsKey("action_jump"))
        {
            animator.SetInteger("action_jump", 0);
        }

        // if (roleController.animatorParams.ContainsKey("action_roll"))
        animator.SetInteger("action_roll", 0);

        if (roleController.animatorParams.ContainsKey("action3over"))
        {
            animator.SetBool("action3over", false);
        }

        if (roleController.animatorParams.ContainsKey("dodge"))
        {
            animator.SetBool("dodge", false);
        }

        if (roleController.animatorParams.ContainsKey("hurt"))
        {
            animator.SetBool("hurt", false);
        }

        if (animatorStateInfo.IsTag("idle"))
        {
            if (roleController && roleController.BeHaviorTree)
            {
                roleController.BeHaviorTree.SendEvent("idleon");
            }
        }
        roleController.AnimMoveSpeedScale = 1f;

        // idle状态跳跃重置
        if (roleController.IsGrounded() ||
            roleController.GetCurrAnimTagHash() == Animator.StringToHash("idle") ||
            roleController.GetCurrAnimTagHash() == Animator.StringToHash("run"))
        {
            roleController.currjumpTimes = 0;
            if (roleController.animatorParams.ContainsKey("no_jump"))
            {
                animator.SetBool("no_jump", false);
            }
        }
    }