Unity3D script for controlling a character
You don't need this directive in the code you have given us.

using System.Collections;




It's conventional to use Pascal casing to name private constants in a file, so

private const float minSpeed = 1f;

private const float maxSpeed = 5f;

private const float minJump = 1f;

private const float maxJump = 10f;


should be:

private const float MinSpeed = 1f;

private const float MaxSpeed = 5f;

private const float MinJump = 1f;

private const float MaxJump = 10f;




In C# it's convention that private instance fields start with an underscore.

[SerializeField]

private float _speedModifier;

[SerializeField]

private float _jumpModifier;


I would also consider writing 'getter' and 'setter' methods for each field instead of serializing them.



I believe public properties also use Pascal case conventionally.

public OnGroundStatus onGroundStatus

{

    get { return _onGroundStatus; }

}

public OnWallStatus onWallStatus

{

    get { return _onWallStatus; }

}


If you preferred you could use auto-properties to set these instead.

public OnGroundStatus OnGroundStatus { get; private set; }

public OnWallStatus OnWallStatus { get; private set; }




I don't see a usage of these properties in your code.

private bool isHorizontalStill

{

    get { return (rigidbody2D.velocity.x == 0); }

}

private bool isVerticalStill

{

    get { return (rigidbody2D.velocity.y == 0); }

}