public PractiseStepBehaviour GetBehaviour(int index) { PractiseStepBehaviour behaviour = PractiseStepBehaviour.None; if (!stepFinished && curStep != null) { curStep.behaviour.TryGetValue(index, out behaviour); } return(behaviour); }
public override void Update(IM.Number fDeltaTime) { m_player.forward = GameUtils.HorizonalNormalized(mate.position, m_player.position); PractiseStepBehaviour stepBehaviour = behaviour.GetBehaviour(system.index); if (stepBehaviour != PractiseStepBehaviour.Face2Mate) { system.SetTransaction(AIState.Type.ePractiseGuide_Idle); } }
public override void Update(IM.Number fDeltaTime) { PractiseStepBehaviour stepBehaviour = behaviour.GetBehaviour(system.index); if (stepBehaviour == PractiseStepBehaviour.Run2Basket) { m_moveTarget = shootTarget; } else if (stepBehaviour == PractiseStepBehaviour.PickPass2Mate) { } else { system.SetTransaction(AIState.Type.ePractiseGuide_Idle); } }
public override void OnEnter(AIState lastState) { base.OnEnter(lastState); shootTarget = m_match.mCurScene.mBasket.m_vShootTarget; PractiseStepBehaviour stepBehaviour = behaviour.GetBehaviour(system.index); if (stepBehaviour == PractiseStepBehaviour.PickPass2Mate) { Player mate = m_player.m_team.members.Find(p => p != m_player); IM.Vector3 dirPlayer2Mate = GameUtils.HorizonalNormalized(mate.position, m_player.position); IM.Vector3 dirPlayer2Basket = GameUtils.HorizonalNormalized(shootTarget, m_player.position); bool left = IM.Vector3.Cross(dirPlayer2Basket, dirPlayer2Mate).y < 0; IM.Vector3 dirMove = IM.Quaternion.AngleAxis(left ? new IM.Number(90) : -new IM.Number(90), IM.Vector3.up) * dirPlayer2Basket; m_moveTarget = m_player.position + dirMove; } }
public override void Update(IM.Number fDeltaTime) { PractiseStepBehaviour stepBehaviour = behaviour.GetBehaviour(system.index); switch (stepBehaviour) { case PractiseStepBehaviour.Face2Mate: system.SetTransaction(AIState.Type.ePractiseGuide_Face2Mate); break; case PractiseStepBehaviour.PickPass2Mate: if (m_ball.m_ballState == BallState.eLoseBall) { system.SetTransaction(AIState.Type.ePractiseGuide_TraceBall); } break; case PractiseStepBehaviour.Run2Basket: system.SetTransaction(AIState.Type.ePractiseGuide_Positioning); break; case PractiseStepBehaviour.Layup: if (m_player.m_bWithBall) { system.SetTransaction(AIState.Type.ePractiseGuide_Layup); } break; case PractiseStepBehaviour.Shoot: if (m_player.m_bWithBall) { system.SetTransaction(AIState.Type.ePractiseGuide_Shoot); } break; case PractiseStepBehaviour.Defense: system.SetTransaction(AIState.Type.ePractiseGuide_Defense); break; } }