Exemple #1
0
        public override float CalculateLeftTime()
        {
            float normalized_time = NormalizedTime;
            float speed           = Combatant.Animator.speed;

            MoveEditor.Move move = Combatant.MoveController.GetMoveByState(MoveController.CombatantMoveState.kBackward);

            MoveController.CombatantMoveState move_state = Combatant.GetMoveState();
            int state_hash = Combatant.MoveController.GetCurrentAnimHash();
            AnimatorStateInfo state_info = Combatant.MoveController.GetCurrentStateInfo();

            if (MoveController.m_backward_hash != state_hash)
            {
                normalized_time = NormalizedTime;
                speed           = move.Speed;
            }
            else if (move_state != MoveController.CombatantMoveState.kBackward)
            {
                normalized_time = 1.0f;
            }
            else if (state_hash != state_info.fullPathHash)
            {
                normalized_time = NormalizedTime;
                speed           = move.Speed;
            }
            else if (NormalizedTime > 0.0f && state_info.normalizedTime >= NormalizedTime)
            {
                normalized_time = state_info.normalizedTime;
            }

            float left_time = move._animationClip.length * (1.0f - normalized_time);

            return(left_time / speed);
        }
Exemple #2
0
        public override void Update()
        {
            base.Update();

            MoveController.CombatantMoveState move_state = Combatant.GetMoveState();
            int state_hash = Combatant.MoveController.GetCurrentAnimHash();
            AnimatorStateInfo state_info = Combatant.MoveController.GetCurrentStateInfo();

            if (move_state != MoveController.CombatantMoveState.kHitReaction)
            {
                EB.Debug.LogError("invalid move state");
                Stop();
                return;
            }

            if (state_hash != state_info.fullPathHash)
            {
                // animator does not start blending
                return;
            }

            if (state_info.normalizedTime > EndNormalizedTime && NormalizedTime > EndNormalizedTime)
            {
                End();
                return;
            }

            NormalizedTime = state_info.normalizedTime;

            if (RotateToIdle)
            {
                TryRotateTowardToIdle();
            }
        }
Exemple #3
0
        public override void Update()
        {
            base.Update();

            MoveController.CombatantMoveState move_state = Combatant.GetMoveState();
            int state_hash = Combatant.MoveController.GetCurrentAnimHash();
            AnimatorStateInfo state_info = Combatant.MoveController.GetCurrentStateInfo();

            if (move_state != MoveState)
            {
                EB.Debug.LogError("move state not match");
                Stop();
                return;
            }

            if (state_hash != state_info.fullPathHash)
            {
                return;
            }

            NormalizedTime = state_info.normalizedTime;

            UpdateLocation();
            if (ArrivedAtDestination())
            {
                End();
            }
        }
Exemple #4
0
 //Move idle state
 public void SetDesiredState(MoveController.CombatantMoveState stateCommand)
 {
     if (_animator != null)
     {
         _animator.SetInteger("State", (int)stateCommand);
     }
 }
Exemple #5
0
        public override float CalculateLeftTime()
        {
            float normalized_time = NormalizedTime;
            float speed           = Combatant.Animator.speed;

            MoveEditor.Move move = Combatant.MoveController.GetMove(MoveName, false);

            MoveController.CombatantMoveState move_state = Combatant.GetMoveState();
            int current_state_hash       = Combatant.MoveController.GetCurrentAnimHash();
            int this_state_hash          = AnimatorStateNameHash;
            AnimatorStateInfo state_info = Combatant.MoveController.GetCurrentStateInfo();

            if (this_state_hash != current_state_hash)
            {// just new
                normalized_time = NormalizedTime;
                speed           = move.Speed;
            }
            else if (move_state != MoveController.CombatantMoveState.kHitReaction)
            {// leaving
                normalized_time = 1.0f;
            }
            else if (current_state_hash != state_info.fullPathHash)
            {// blending
                normalized_time = NormalizedTime;
                speed           = move.Speed;
            }
            else if (NormalizedTime > 0.0f && state_info.normalizedTime >= NormalizedTime)
            {// not repeat
                normalized_time = state_info.normalizedTime;
            }

            float left_time = move._animationClip.length * (1.0f - normalized_time);

            return(left_time / speed);
        }
Exemple #6
0
        public void SetCharMoveState(MoveController.CombatantMoveState moveState, bool needToTransitionToIdle = false, MoveController.CombatantMoveState needToSetStateAfterMove = MoveController.CombatantMoveState.kIdle)
        {
            if (mCurrent != null && mCurrent.character != null)
            {
                MoveController moveController = mCurrent.character.GetComponent <MoveController>();
                System.Action  fn             = () => {
                    if (moveController.CurrentState == MoveController.CombatantMoveState.kEntry && moveState == MoveController.CombatantMoveState.kEntry)
                    {
                        moveController.CurrentState = MoveController.CombatantMoveState.kIdle;
                    }
                    moveController.TransitionTo(moveState);
                    //激活状态情况才能启动
                    if (mDMono.gameObject.activeInHierarchy)
                    {
                        StartCoroutine(WaitToSetState(needToTransitionToIdle, needToSetStateAfterMove));
                    }
                    else
                    {
                        EB.Debug.LogWarning("UI3DLobby SetCharMoveState this.gameObject.activeSelf = false!!");
                    }
                };

                if (!moveController.IsInitialized)
                {
                    moveController.RegisterInitSuccCallBack(fn);
                }
                else
                {
                    fn();
                }
            }
        }
Exemple #7
0
        public override void Update()
        {
            base.Update();

            MoveController.CombatantMoveState move_state = Combatant.GetMoveState();
            int state_hash = Combatant.MoveController.GetCurrentAnimHash();
            AnimatorStateInfo state_info = Combatant.MoveController.GetCurrentStateInfo();

            if (move_state != MoveController.CombatantMoveState.kForward)
            {
                EB.Debug.LogError("move state not match");
                Stop();
                return;
            }

            if (state_hash != state_info.fullPathHash)
            {
                return;
            }

            UpdateLocation();

            float end_time = 1.0f - timeEpsilon;

            if (state_info.normalizedTime > end_time && NormalizedTime > end_time)
            {
                End();
                return;
            }

            NormalizedTime = state_info.normalizedTime;
        }
Exemple #8
0
        public override void Update()
        {
            base.Update();

            MoveController.CombatantMoveState move_state = Combatant.GetMoveState();
            int state_hash = Combatant.MoveController.GetCurrentAnimHash();
            AnimatorStateInfo state_info = Combatant.MoveController.GetCurrentStateInfo();

            if (move_state != MoveController.CombatantMoveState.kHitReaction)
            {
                EB.Debug.LogError("invalid move state");
                Stop();
                return;
            }

            if (state_hash != state_info.fullPathHash)
            {
                return;
            }

            UpdateLocation();

            if (state_info.normalizedTime > EndNormalizedTime && NormalizedTime > EndNormalizedTime)
            {
                OnEnd();
                return;
            }

            NormalizedTime = state_info.normalizedTime;
            //EB.Debug.Log("FlowActionState.Update: NormalizedTime = {0}, EndNormalizedTime = {1}", NormalizedTime, EndNormalizedTime);
        }
Exemple #9
0
 public bool IsDesiredState(MoveController.CombatantMoveState stateCommand)
 {
     if (_animator == null)
     {
         return(false);
     }
     return(_animator.GetInteger("State") == (int)stateCommand);
 }
Exemple #10
0
        private IEnumerator WaitToSetState(bool needToTransitionToIdle = false, MoveController.CombatantMoveState needToSetStateAfterMove = MoveController.CombatantMoveState.kIdle)
        {
            yield return(null);

            //等一帧在处理,不然状态动画的状态切换会切换不成功
            this.needToTransitionToIdle  = needToTransitionToIdle;
            this.needToSetStateAfterMove = needToSetStateAfterMove;
        }
Exemple #11
0
        protected override void OnUpdate()
        {
            MoveController.CombatantMoveState move_state = Combatant.GetMoveState();

            if (move_state != MoveController.CombatantMoveState.kHitReaction)
            {
                End();
                return;
            }
        }
Exemple #12
0
        public override void Update()
        {
            base.Update();

            if (mFreeze)
            {
                //if (mFreezeTime > 0)
                //{
                //    mFreezeTime -= Time.deltaTime;
                //    if (mFreezeTime <= 0)
                //    {
                //        End();
                //    }
                //}

                if (!Combatant.IsAlive())
                {
                    End();

                    //SwitchState(Combatant.GetActionState<DeathActionState>());
                    Combatant.CallDeath();
                }
                return;
            }

            MoveController.CombatantMoveState move_state = Combatant.GetMoveState();
            int state_hash = Combatant.MoveController.GetCurrentAnimHash();
            AnimatorStateInfo state_info = Combatant.MoveController.GetCurrentStateInfo();

            if (move_state != MoveController.CombatantMoveState.kHitReaction)
            {
                EB.Debug.LogError("invalid move state");
                Stop();
                return;
            }

            if (state_hash != state_info.fullPathHash)
            {
                // animator does not start blending
                return;
            }

            if (state_info.normalizedTime > EndNormalizedTime && NormalizedTime > EndNormalizedTime)
            {
                End();
                return;
            }

            NormalizedTime = state_info.normalizedTime;

            if (RotateToIdle)
            {
                TryRotateTowardToIdle();
            }
        }
Exemple #13
0
    public void SetDesiredState(MoveController.CombatantMoveState stateCommand)
    {
        if (_animator != null)
        {
            MoveController moveController = _animator.gameObject.GetComponent <MoveController>();
            if (moveController != null)
            {
                moveController.TransitionTo(stateCommand);
            }

            MountComponent mountComponent = _animator.gameObject.GetComponent <MountComponent>();
            if (mountComponent != null)
            {
                mountComponent.SetDesiredState(stateCommand);
            }
        }
    }
Exemple #14
0
        public void DestroyHealthBar()
        {
            if (m_fxHelper != null)
            {
                m_fxHelper.m_HealthBarFXAttachment = null;
                m_fxHelper = null;
            }

            if (m_healthBar != null && m_healthBar.mDMono != null)
            {
                m_healthBar.Show(false);
                GameObject.Destroy(m_healthBar.mDMono.gameObject);
                m_healthBar          = null;
                m_healthBarTransform = null;
            }

            m_moveCtrl      = null;
            m_lastMoveState = MoveController.CombatantMoveState.kIdle;
            Hidden          = false;
        }
Exemple #15
0
        public void SetCharMoveState(GameObject character, MoveController.CombatantMoveState moveState)
        {
            if (character != null)
            {
                MoveController moveController = character.GetComponent <MoveController>();

                if (moveController == null)
                {
                    moveController = character.GetComponentInChildren <MoveController>();
                    if (moveController == null)
                    {
                        return;
                    }
                }

                ParticleSystem[] sys = character.GetComponentsInChildren <ParticleSystem>(true);
                for (int i = 0; i < sys.Length; i++)
                {
                    if (sys[i] != null && sys[i].GetComponent <Renderer>() != null)
                    {
                        //sys[i].scalingMode = ParticleSystemScalingMode.Hierarchy;
                        var main = sys[i].main;
                        main.scalingMode = ParticleSystemScalingMode.Hierarchy;
                    }
                }

                System.Action fn = () =>
                {
                    moveController.TransitionTo(moveState);
                };

                if (!moveController.IsInitialized)
                {
                    moveController.RegisterInitSuccCallBack(fn);
                }
                else
                {
                    fn();
                }
            }
        }
Exemple #16
0
        public override float CalculateLeftTime()
        {
            float normalized_time = NormalizedTime;
            float speed           = Combatant.Animator.speed;

            MoveEditor.Move move = Combatant.MoveController.GetMoveByState(MoveController.CombatantMoveState.kForward);
            if (move == null)
            {
                EB.Debug.LogWarning("ForwardActionState.CalculateLeftTime: forward move not found for {0}", Combatant.myName);
                return(0.0f);
            }

            MoveController.CombatantMoveState move_state = Combatant.GetMoveState();
            int state_hash = Combatant.MoveController.GetCurrentAnimHash();
            AnimatorStateInfo state_info = Combatant.MoveController.GetCurrentStateInfo();

            if (MoveController.m_forward_hash != state_hash)
            {
                normalized_time = NormalizedTime;
                speed           = move.Speed;
            }
            else if (move_state != MoveController.CombatantMoveState.kForward)
            {
                normalized_time = 1.0f;
            }
            else if (state_hash != state_info.fullPathHash)
            {
                normalized_time = NormalizedTime;
                speed           = move.Speed;
            }
            else if (NormalizedTime > 0.0f && state_info.normalizedTime >= NormalizedTime)
            {
                normalized_time = state_info.normalizedTime;
            }

            float left_time = move._animationClip.length * (1.0f - normalized_time);

            return(left_time / speed);
        }
Exemple #17
0
        public override void Update()
        {
            base.Update();

            if (skipmove)
            {
                Stop();
                return;
            }

            MoveController.CombatantMoveState move_state = Combatant.GetMoveState();
            int state_hash = Combatant.MoveController.GetCurrentAnimHash();
            AnimatorStateInfo state_info = Combatant.MoveController.GetCurrentStateInfo();

            if (move_state != MoveController.CombatantMoveState.kAttackTarget)
            {
                EB.Debug.LogError("move state not match");
                Stop();
                return;
            }

            if (state_hash != state_info.fullPathHash)
            {
                EB.Debug.Log("SkillActionState.Update: animator state not ready, {0} != {1}", state_hash.ToString(), state_info.fullPathHash.ToString());
                return; //but we do not need to stay here
            }

            float end_time = 1.0f - timeEpsilon;

            if (state_info.normalizedTime > end_time && NormalizedTime > end_time)
            {
                End();
                return;
            }

            NormalizedTime = state_info.normalizedTime;
        }
Exemple #18
0
 public void SetupMove(MoveController.CombatantMoveState move_state, int anim_hash, float start_time)
 {
     Combatant.MoveController.TransitionTo(move_state);
     Combatant.MoveController.CrossFade(anim_hash, 0.0f, 0, start_time);
 }