public override void Update(IM.Number fDeltaTime) { if (m_player.animMgr.GetPlayInfo(m_curAction).normalizedTime > new IM.Number((int)curAnimStep)) { curAnimStep++; _OnActionDone(); return; } if (m_player.m_toSkillInstance == null) { curAnimStep = 1; m_stateMachine.SetState(PlayerState.State.eBackToStand); return; } if (GameUtils.HorizonalDistance(m_player.position, m_basket.m_vShootTarget) < IM.Number.half) { m_player.m_StateMachine.SetState(State.eBackToBack, true); return; } PlayerMovement.MoveAttribute attr = m_player.mMovements[(int)PlayerMovement.Type.eBackToBackRun].mAttr; m_player.MoveTowards(m_dirPlayerToBasket, IM.Number.zero, fDeltaTime, (isCompeteWin? IM.Number.one : -IM.Number.one) * m_dirPlayerToBasket * attr.m_initSpeed); }
override public void OnEnter(PlayerState lastState) { base.OnEnter(lastState); m_player.m_moveType = MoveType.eMT_RequireBall; if (lastState.m_eState == PlayerState.State.eStand) { m_animType = AnimType.N_TYPE_0; } else if (lastState.m_eState == PlayerState.State.eRun) { m_animType = AnimType.N_TYPE_1; } m_player.m_dir = -1; m_lastMoveDir = -1; PlayerMovement.MoveAttribute attr = m_player.mMovements[(int)PlayerMovement.Type.eRunWithoutBall].mAttr; m_runningSpeed = attr.m_curSpeed; m_turningSpeed = attr.m_TurningSpeed; m_curAction = m_mapAnimType[m_animType]; m_player.animMgr.CrossFade(m_curAction, false); m_player.eventHandler.OnRequireBall(); }
public override void Update(IM.Number fDeltaTime) { base.Update(fDeltaTime); PlayerMovement.MoveAttribute attr = m_player.mMovements[(int)PlayerMovement.Type.eBackToBackRun].mAttr; m_player.MoveTowards(dirAttackerToBasket, IM.Number.zero, fDeltaTime, (isCompeteWin ? -IM.Number.one : IM.Number.one) * dirAttackerToBasket * attr.m_initSpeed); PlayerState state = m_player.m_defenseTarget.m_StateMachine.m_curState; if (state.m_eState != State.eBackCompete) { m_stateMachine.SetState(PlayerState.State.eStand); } }
override public void Update(IM.Number fDeltaTime) { base.Update(fDeltaTime); bool bKnocked = false; Player target = m_player.m_defenseTarget; if (m_player.m_toSkillInstance == null) { m_player.m_StateMachine.SetState(State.eStand); return; } if (m_player.moveDirection == IM.Vector3.zero) { m_player.m_StateMachine.SetState(State.eBackToBack, true); return; } IM.Number angle = IM.Vector3.Angle(m_dirPlayerToBasket, m_player.moveDirection); if (angle > new IM.Number(45) || GameUtils.HorizonalDistance(m_player.position, m_basket.m_vShootTarget) < IM.Number.half) { m_player.m_StateMachine.SetState(State.eBackToBack, true); return; } if (target != null) { IM.Vector3 vecPlayerToDefender = target.position - m_player.position; IM.Number dist = vecPlayerToDefender.magnitude; IM.Vector3 dirPlayerToDefender = vecPlayerToDefender.normalized; angle = IM.Vector3.Angle(m_dirPlayerToBasket, dirPlayerToDefender); if (angle <= GlobalConst.BACK_TO_BACK_FAN_ANGLE && dist <= GlobalConst.BACK_TO_BACK_FAN_RADIUS) { State targetState = target.m_StateMachine.m_curState.m_eState; if (targetState == State.eDefense || targetState == State.eRun || targetState == State.eStand) { m_player.m_toSkillInstance = m_curExecSkill; m_stateMachine.SetState(State.eBackCompete, true); PlayerState_BackBlock state = target.m_StateMachine.GetState(State.eBackBlock) as PlayerState_BackBlock; state.m_competor = m_player; target.m_StateMachine.SetState(state, true); return; } else if (targetState == State.eStand || targetState == State.eRun || targetState == State.eRush) { Debug.Log("Defender state: " + targetState); bKnocked = true; } } } if (bKnocked && target != null) { target.m_StateMachine.SetState(State.eKnocked, true); } PlayerMovement.MoveAttribute attr = m_player.mMovements[(int)PlayerMovement.Type.eBackToBackRun].mAttr; m_player.MoveTowards(m_dirPlayerToBasket, IM.Number.zero, fDeltaTime, m_dirPlayerToBasket * attr.m_initSpeed); }