示例#1
0
    public override void UpdateState(Transform ball)
    {
        if (ball == null)
        {
            return;
        }
        Vector3 position = ball.position;

        if (position.y < m_player.GetPlayerPosition().y)
        {
            Vector3 moveDir = position - m_player.GetPlayerPosition();
            moveDir = moveDir.normalized;

            position  = m_player.GetPlayerPosition();
            position += Time.deltaTime * moveDir * m_player.PlayerData.m_moveSpeed;
            m_player.MovePosition(position);

            bool checkInArea = PlayerCollider.CheckInHitBallArea(ball, m_player.Transform,
                                                                 m_player.PlayerData.m_radius, m_player.PlayerData.m_angle, m_player.BoxCollider);
            if (checkInArea && SwitchStateAction != null)
            {
                SwitchStateAction(EAIControlState.Hit);
            }
        }
        else
        {
            if (SwitchStateAction != null)
            {
                SwitchStateAction(EAIControlState.BackToBornPoint);
            }
        }
    }
示例#2
0
    private void HitBallDelegate(Player player, Vector2 direction, float force, int id)
    {
        if (m_gameBall == null)
        {
            return;
        }

        bool checkIsHitArea = PlayerCollider.CheckInHitBallArea(m_gameBall.GetBallInstance().transform, player.Transform,
                                                                player.PlayerData.m_radius, player.PlayerData.m_angle, player.BoxCollider);

        if (checkIsHitArea)
        {
            CameraControl.GetInstance().Trigger();
            CameraControl.GetInstance().TriggerMask();

            GameAudioModuel audioModuel = GameStart.GetInstance().AudioModuel;
            if (id == m_player.ID)
            {
                GameEventModuel meoduel = GameStart.GetInstance().EventModuel;
                meoduel.SendEvent(GameEventID.PLAYER_HIT_BALL, true, 0f);

                m_side = ESide.Player;
                m_contestData.AddIndex();

                m_contestUI.FreshUI(m_contestData.m_heart, m_contestData.m_index);
                if (m_contestData != null && m_contestData.m_changeAudio && !m_change)
                {
                    List <string> list = new List <string>
                    {
                        "lerp",
                        "BGM_002",
                    };
                    audioModuel.PlayBgAudio(list);
                    m_change = true;
                }

                m_playerIndex++;
                m_playerIndex = Mathf.Clamp(m_playerIndex, 0, m_audioNameList.Count - 1);
                audioModuel.PlayAudio(m_audioNameList[m_playerIndex]);
            }
            else
            {
                m_side = ESide.AI;
                m_aiIndex++;
                m_aiIndex = Mathf.Clamp(m_aiIndex, 0, m_audioNameList.Count - 1);
                audioModuel.PlayAudio(m_audioNameList[m_aiIndex]);
            }

            if (m_gameBall != null)
            {
                ESide side = (id == m_player.ID) ? ESide.Player : ESide.AI;
                m_gameBall.SetVelocity(direction, force, side);
                m_gameBall.ChangeEffectDir(side);
            }
        }
    }
示例#3
0
 public GameBall[] GetInPlayerAreaBalls(Player player)
 {
     if (m_checkBalls == null)
     {
         m_checkBalls = new List <GameBall>();
     }
     m_checkBalls.Clear();
     for (int i = 0; i < m_ballList.Count; i++)
     {
         GameBall ball   = m_ballList[i];
         bool     inarea = PlayerCollider.CheckInHitBallArea(ball.GetBallInstance().transform, player.Transform,
                                                             player.PlayerData.m_radius, player.PlayerData.m_angle, player.BoxCollider);
         if (inarea)
         {
             m_checkBalls.Add(ball);
         }
     }
     return(m_checkBalls.ToArray());
 }