コード例 #1
0
    /// <summary>
    ///
    /// </summary>
    /// <returns>Is used joyCon for input?</returns>
    private bool HandlePlayerJoyConInput()
    {
        if (!PlayerBalloon)
        {
            return(false);
        }
        if (!isUseLeftJoycon && !JoyConInputManager.IsUsingRightJoyCon())
        {
            return(false);
        }
        else if (isUseLeftJoycon && !JoyConInputManager.IsUsingLeftJoyCon())
        {
            return(false);
        }

        /// Handle release balloon
        var gyroInfo = JoyConInputManager.GetJoyConGyro(isUseLeftJoycon);

        if (gyroInfo.y < joyConReleaseSensitivity ||
            JoyConInputManager.GetJoyConButtonDown(Joycon.Button.SHOULDER_2))
        {
            if (PlayerBalloon.State != Balloon.BalloonStatus.Normal)
            {
                JoyConInputManager.TriggerRumble(false, 180.0f, 360.0f, 0.3f, 200);
                ReleaseBalloon(true);
            }
            return(true);
        }

        /// Handle inflate balloon and animation
        if (Mathf.Abs(gyroInfo.y) > Mathf.Abs(joyConReleaseSensitivity))
        {
            return(false);
        }
        Vector3 joyAccel   = JoyConInputManager.GetJoyConAccel(isUseLeftJoycon);
        float   accelDelta = joyAccel.sqrMagnitude - joyConInputSensitivity;

        if (accelDelta < 0.0f)
        {
            player.ResetInflateAnimationSpeed();
            return(false);
        }

        float newAir = accelDelta * joyConInflateSpeed * Time.deltaTime;

        if (newAir == 0.0f)
        {
            return(false);
        }
        playerJoyConInputSpeed = newAir * joyConInflateAniSpeedMultiplier;
        player.SetInflateAnimationSpeed(playerJoyConInputSpeed);
        inflatedAirVolume += newAir;
        if (PlayerBalloon.Inflate(newAir, newAir * joyConInputPitchMultiplier))
        {
            // Process after balloon boomed
            JoyConInputManager.TriggerRumble(false, 360.0f, 180.0f, 0.7f, 400);
            PlayerBalloon = null;
            Invoke("SpawnPlayerBalloon", failFreezeTime);
            IsPlayerFreezing = true;
            player.StartDizzy();
            player.ResetInflateAnimationSpeed();
        }
        return(true);
    }