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); } } }
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); } } }
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()); }