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); }
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(); } }
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(); } }
//Move idle state public void SetDesiredState(MoveController.CombatantMoveState stateCommand) { if (_animator != null) { _animator.SetInteger("State", (int)stateCommand); } }
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); }
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(); } } }
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; }
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); }
public bool IsDesiredState(MoveController.CombatantMoveState stateCommand) { if (_animator == null) { return(false); } return(_animator.GetInteger("State") == (int)stateCommand); }
private IEnumerator WaitToSetState(bool needToTransitionToIdle = false, MoveController.CombatantMoveState needToSetStateAfterMove = MoveController.CombatantMoveState.kIdle) { yield return(null); //等一帧在处理,不然状态动画的状态切换会切换不成功 this.needToTransitionToIdle = needToTransitionToIdle; this.needToSetStateAfterMove = needToSetStateAfterMove; }
protected override void OnUpdate() { MoveController.CombatantMoveState move_state = Combatant.GetMoveState(); if (move_state != MoveController.CombatantMoveState.kHitReaction) { End(); return; } }
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(); } }
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); } } }
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; }
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(); } } }
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); }
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; }
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); }