예제 #1
0
    private void ColorSlider(StaminaLevel s)
    {
        switch (s)
        {
        case StaminaLevel.LOW:
            sliderColor.color = Color.red;
            break;

        case StaminaLevel.MID:
            sliderColor.color = Color.blue;
            break;

        case StaminaLevel.HIGH:
            sliderColor.color = Color.green;
            break;

        case StaminaLevel.SPECIAL:
            sliderColor.color = Color.white;
            break;

        default:
            break;
        }

        //sliderColor.color =
    }
예제 #2
0
    protected override void Update()
    {
        // set these before base update, so base update can calculate temp effects
        currentStaminaRegenRate = staminaRegenRate;
        cantStumble             = debug_noStumble;
        noStaminaLoss           = false;

        base.Update();

        // calculate stamina
        StaminaLevel currentStaminaLevel = StaminaLevel.SPECIAL;

        if (!noStaminaLoss)
        {
            // check if regening or using stamina
            if (currentMoveSpeed > speedToSpendStamina)
            {
                currentStamina = Mathf.Max(currentStamina - staminaUsageRate * Time.deltaTime, 0.0f);
            }
            else
            {
                currentStamina = Mathf.Min(currentStamina + currentStaminaRegenRate * Time.deltaTime, staminaMax);
            }

            // check stamina level
            if (currentStamina <= staminaLevelLow)
            {
                currentMaxMoveSpeed *= staminaLowDecreasedLevel;
                currentStaminaLevel  = StaminaLevel.LOW;
            }
            else if (currentStamina >= staminaLevelHigh)
            {
                currentMaxMoveSpeed *= staminaHighIncreasedLevel;
                currentStaminaLevel  = StaminaLevel.HIGH;
            }
            else
            {
                currentStaminaLevel = StaminaLevel.MID;
            }
        }

        sliderStamina.value = currentStamina / staminaMax;
        ColorSlider(currentStaminaLevel);

        if (Input.GetMouseButton(0))
        {
            mouseHoldTime += Time.deltaTime;
            if (mouseHoldTime > mouseHoldTimeToStop)
            {
                currentMoveSpeed -= mouseHoldStopAmount;
            }
        }
        if (Input.GetMouseButtonUp(0))
        {
            mouseHoldTime = 0.0f;
        }

        // update distance display
        distanceRun          = transform.position.z - startZValue;
        distanceDisplay.text = (int)distanceRun + " meters";

        if (debug_alwaysRun)
        {
            currentMoveSpeed = currentMaxMoveSpeed;
        }
        if (debug_infiniteStamina)
        {
            currentStamina = staminaMax;
        }

        // DEBUG!
        if (Input.GetKeyDown(KeyCode.Space))
        {
            debug_noStumble = true;
            Debug_KeyboardStep();
        }
    }