Ejemplo n.º 1
0
    public override void SetUpInput()
    {
        DashComponent     = GetComponent <DashComponent>();
        AttackComponent   = GetComponent <EHAttackComponent>();
        MovementComponent = GetComponent <EHCharacterMovementComponent>();
        CharacterWallJump = GetComponent <WallJump>();
        ParryComponent    = GetComponent <EHParry>();

        BindActionToInput(JUMP_COMMAND, ButtonInputType.Button_Pressed, Jump);
        BindActionToInput(JUMP_COMMAND, ButtonInputType.Button_Buffer, JumpBufferEnded);
        BindActionToInput(JUMP_COMMAND, ButtonInputType.Button_Released, MovementComponent.EndJump);
        BindActionToInput(DASH_COMMAND, ButtonInputType.Button_Pressed, DashComponent.InputDash);
        BindActionToInput(DASH_COMMAND, ButtonInputType.Button_Buffer, DashComponent.CancelDash);
        BindActionToInput(SHOOT_COMMAND, ButtonInputType.Button_Pressed, Shoot);
        BindActionToInput(SHOOT_COMMAND, ButtonInputType.Button_Buffer, ShootBufferEnd);
        BindActionToInput(ATTACK_COMMAND, ButtonInputType.Button_Pressed, Attack);
        BindActionToInput(ATTACK_COMMAND, ButtonInputType.Button_Buffer, AttackBufferEnded);
        BindActionToInput(JUMP_COMMAND, ButtonInputType.Button_Pressed, CharacterWallJump.InputWallJump);
        BindActionToInput(JUMP_COMMAND, ButtonInputType.Button_Buffer, CharacterWallJump.InputCancelWallJump);
        BindActionToInput(PARRY_COMMAND, ButtonInputType.Button_Pressed, ParryComponent.ParryInputDown);
        BindActionToInput(PARRY_COMMAND, ButtonInputType.Button_Buffer, ParryComponent.ParryInputReleased);

        BindActionToAxis(HORIZONTAL_AXIS, MovementComponent.SetHorizontalInput);
        BindActionToAxis(VERTICAL_AXIS, MovementComponent.SetVerticalInput);
    }
    /// <summary>
    /// This method will be called to apply damage to
    ///
    /// This will return true if damage was successfully given to the player
    /// </summary>
    /// <param name="AttackComponentThatHurtUs"></param>
    /// <param name="DamageToTake"></param>
    public bool TakeDamage(EHAttackComponent AttackComponentThatHurtUs, int DamageToTake)
    {
        FDamageData DamageData = new FDamageData();

        if (bIsInvincible)
        {
            DamageData.DamageType = EDamageType.NONE;
            OnCharacterHealthChanged?.Invoke(DamageData);
            return(false);
        }

        DamageData.AttackSource = AttackComponentThatHurtUs;
        DamageData.DamageAmount = DamageToTake;
        int PreviousHealth = Health;

        Health = Mathf.Clamp(Health - DamageToTake, 0, MaxHealth);

        if (Health <= 0 && PreviousHealth > 0)
        {
            DamageData.DamageType = EDamageType.DEATH;
        }
        else
        {
            DamageData.DamageType = EDamageType.DAMAGE;
        }
        OnCharacterHealthChanged?.Invoke(DamageData);
        return(true);
    }