示例#1
0
    public void Respawn()
    {
        AudioManager.PlaySound(AudioManager.Sound.Confirm);
        Cursor.lockState = CursorLockMode.Locked;
        Cursor.visible   = false;
        PlayerRespawned?.Invoke();
        impact        = Vector3.zero;
        isDead        = false;
        canMove       = true;
        canRun        = true;
        currentHealth = maxHealth;
        PlayerDamaged?.Invoke(currentHealth, maxHealth);
        stamina = maxStamina;
        StaminaChanged?.Invoke(stamina, maxStamina);
        var respawnPosition = new Vector3(152.2615f, 1, 142.5762f);

        // turn off characterController so that it does not override transform.position
        characterController.enabled   = false;
        gameObject.transform.position = respawnPosition;
        characterController.enabled   = true;

        onFireTimer    = 5;
        bleedingTimer  = 10;
        exhaustedTimer = 5;

        animator.SetBool("isDying", false);
        animator.SetBool("isRunning", false);
        animator.SetBool("isAttacking", false);
        animator.SetBool("isIdle", true);
    }
示例#2
0
 private void ChangeStamina(float changeAmount)
 {
     stamina += changeAmount * Time.deltaTime;
     if (stamina > maxStamina)
     {
         stamina = maxStamina;
     }
     StaminaChanged?.Invoke(stamina, maxStamina);
 }
示例#3
0
        protected override void OnProcessDelta(Delta d)
        {
            base.OnProcessDelta(d);
            if (d.HasFlag(Delta.Hits))
            {
                HitsChanged.Raise(this);
            }

            if (d.HasFlag(Delta.Mana))
            {
                ManaChanged.Raise(this);
            }

            if (d.HasFlag(Delta.Stamina))
            {
                StaminaChanged.Raise(this);
            }
        }
示例#4
0
 private void DrainStamina()
 {
     stamina = 0;
     StaminaChanged?.Invoke(stamina, maxStamina);
     return;
 }
示例#5
0
 public void ExpenditureStamina()
 {
     StaminaChanged?.Invoke(-energyCost);
 }