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); }