/// <summary> /// Se comprueba si la bola ha entrado en el trigger de bateo /// Golpea la bola /// </summary> /// <param name="collision"></param> private void OnTriggerEnter2D(Collider2D collision) { Ball ball = collision.GetComponent <Ball>(); //Obtenemos la referencia de la pelota if (ball != null && hitState == HitState.BALLHIT) { ball.Hit(GetForceMultiplier()); hitState = HitState.PLATFORM; OnHit?.Invoke(); } }
/// <summary> /// Inicia la fase de bateo /// Coloca al player en la base correspondiente para iniciar el bateo /// Dispara la pelota hacia el jugador /// Informa a los suscritos /// </summary> private void StartRound() { player.transform.position = spacialBases[lastBase].transform.position; player.transform.rotation = spacialBases[lastBase].transform.rotation; ball.transform.position = -spacialBases[lastBase].transform.position; ball.ShootBall(); playerHit.StartHit(); OnStartRound?.Invoke(); }
/// <summary> /// Obtiene input de movimiento y salto /// Realiza el salto en caso de input /// Detecta si está apoyado en el suelo actualmente /// </summary> private void Update() { if (!PauseManager.GameIsPaused) { if (CanMove) { // Movimiento MoveDir = Input.GetAxisRaw("Horizontal"); // Salto if (Input.GetButtonDown("Jump") && Grounded) // && No estar en fase de bateo { rb.AddForce(transform.up * jumpForce); OnJump?.Invoke(); } } else { MoveDir = 0f; } Grounded = (Physics2D.Raycast(transform.position, -transform.up, groundedRayHeight, groundedMask)); } }
/// <summary> /// Es llamado cuando todas las bases espaciales son alcanzadas /// Muestra el panel de nivel completado /// </summary> private void LevelCompleted() { levelCompletedPanel.Init(numHits); OnLevelCompleted?.Invoke(); }
/// <summary> /// Coge la bandera, informando a los suscritos /// </summary> public void TakeFlag() { OnFlagTaken?.Invoke(); flagTaken = true; }