2D Platformer - Sinking into colliders & bumping over tilemap

Hey fellow Unity Developers, hope you’re having a nice day!

I’m currently developing a 2D Platformer and i have this issue with my player sinking into colliders and also hitting bumps when moving over an platform made up from a tileset.

So my question is, how is the best way to do a 2D Platformer Controller, and handle collisions - i’m still fairly new to Unity and C# so would love to learn about new ways to achieve this.

Here is my PlayerController:

using System.Collections;
using System.Collections.Generic;
using Com.LuisPedroFonseca.ProCamera2D;
using UnityEngine;

public class PlayerController : MonoBehaviour {

    [Header("Player Movement")]
    public LayerMask playerMask;
    public float maxSpeed = 7f;
    public float jumpTakeOffSpeed = 7f;
    public bool canMoveInAir = true;
    public Transform groundCheck;

    public bool grounded;
    private float playerInput;
    private Vector2 velocity;
    private Rigidbody2D rb2d;
    private float groundCheckRadius = 0.2f;

    void OnEnable()
        rb2d = GetComponent<Rigidbody2D>();

    void Start () {


    void FixedUpdate()

        velocity = rb2d.velocity;
        grounded = Physics2D.OverlapCircle(groundCheck.position, groundCheckRadius, playerMask);
        Debug.DrawLine(transform.position, groundCheck.position, Color.red);


        if (Input.GetButton("Jump"))

    public void Move(float horizontalInput)
        if (!canMoveInAir && !grounded)

        velocity.x = horizontalInput * maxSpeed;
        rb2d.velocity = velocity;

    public void Jump()
        if (grounded && velocity.y == 0)
            rb2d.AddForce(Vector2.up * jumpTakeOffSpeed, ForceMode2D.Impulse);

    public void Die()


Use Collider 2D and Rigibody2D