Пример #1
0
 private void DashButtonReleased()
 {
     if (stateManager.CurrentState == State.ChargeDash)
     {
         DashInformation info = stateManager.GetStateInformationForWriting <DashInformation>(State.Dash);
         info.StartPosition = playerMovement.CurrentPosition;
         info.Velocity      = (Quaternion.AngleAxis(playerMovement.CurrentRigidBodyRotation, Vector3.forward) * Vector3.right).normalized * dashSpeed * (1.0f + chargeAmount);
         stateManager.TransitionToState(State.Dash, info);
     }
 }
 private void OnLayWallButtonPressed()
 {
     if (player.Team != null && stateManager.CurrentState == State.NormalMovement)
     {
         TronWallInformation info = stateManager.GetStateInformationForWriting <TronWallInformation>(State.LayTronWall);
         info.Direction     = playerMovement.Forward;
         info.StartPosition = playerMovement.CurrentPosition;
         stateManager.TransitionToState(State.LayTronWall, info);
     }
 }
Пример #3
0
    private void Shoot()
    {
        // Set the information
        Ball ball = ballCarrier.Ball.ThrowIfNull("Tried to shoot ball while [ballCarrier.Ball] is null");
        NormalMovementInformation shootBallInfo = stateManager.GetStateInformationForWriting <NormalMovementInformation>(State.NormalMovement);

        shootBallInfo.ShotBall          = true;
        shootBallInfo.BallStartPosition = ball.CurrentPosition;
        shootBallInfo.Velocity          = (ball.CurrentPosition - (Vector2)transform.position).normalized * shotSpeed;

        // Cleanup and transition states
        StopShootBallCoroutines();
        stateManager.TransitionToState(State.NormalMovement, shootBallInfo);
    }
Пример #4
0
    private void HandleCollision(GameObject thing)
    {
        Ball ball = thing.GetComponent <Ball>();

        if (ball == null || ball.Owner != null || !ball.Ownable || isCoolingDown || ball.Owner == player)
        {
            return;
        }

        if (stateManager.CurrentState == State.NormalMovement ||
            stateManager.CurrentState == State.Dash ||
            stateManager.CurrentState == State.ChargeDash ||
            stateManager.CurrentState == State.LayTronWall)
        {
            StunNearbyPlayers();

            PossessBallInformation info = stateManager.GetStateInformationForWriting <PossessBallInformation>(State.Possession);
            info.StoleBall = false;
            stateManager.TransitionToState(State.Possession, info);
        }
    }