void HitEnemyInFront()
    {
        var checkHit = AfterDashFrontEnemyDetector.GroundCheckHit();

        if (checkHit.collider != null && DefineHittedObjectType(checkHit.collider.transform) == HittedObjectType.Enemy)
        {
            var eventArgs = new HitDetectionEventArgs()
            {
                HittedObject = checkHit.collider.gameObject, HittedObjectType = HittedObjectType.Enemy, HitPoint = checkHit.point, HitDirection = HitDirection.RightSide
            };
            PlayerHittedObject?.Invoke(eventArgs);
        }
    }
    // OnCollisionEnter2D is called when this collider2D/rigidbody2D has begun touching another rigidbody2D/collider2D (2D physics only)
    void OnCollisionEnter2D(Collision2D collision)
    {
        var hittedObject = collision.gameObject;
        var objectType   = DefineHittedObjectType(collision.transform);
        var hitPoint     = collision.GetContact(0).point;
        var hitDirection = DefineDirection(hitPoint, objectType);

        var eventArgs = new HitDetectionEventArgs()
        {
            HittedObject = hittedObject, HittedObjectType = objectType, HitPoint = hitPoint, HitDirection = hitDirection
        };

        if (IsACrash(eventArgs))
        {
            PlayerCrashed?.Invoke();
        }
        else
        {
            PlayerHittedObject?.Invoke(eventArgs);
        }
    }