Доброго времени суток, занимаюсь разработкой 3D игры на движке Unity. В этом деле я новичок, занимаюсь месяца 2,  имею управление игроком в виде ходьбы, прыжка, ускорения и поворота камеры.  Коды:
передвижение
using UnityEngine;
public class movement : MonoBehaviour
{
    void Start()
    {
    }
    private float speed = 5.0f;
    void FixedUpdate()
    {
        Vector3 Movement = new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical"));
        transform.Translate(Movement * speed * Time.deltaTime);
    }
}
поворот камеры
using UnityEngine;
public class rotation : MonoBehaviour
{
    public float sensitivity = 2.0f;
    private float maxYAngle = 80.0f;
    private float rotationX = 0.0f;
    void Start()
    {
    }
    private void FixedUpdate()
    {
        Cursor.lockState = CursorLockMode.Locked;
        float mouseX = Input.GetAxis("Mouse X");
        float mouseY = Input.GetAxis("Mouse Y");
        transform.parent.Rotate(Vector3.up * mouseX * sensitivity);
        rotationX -= mouseY * sensitivity;
        rotationX = Mathf.Clamp(rotationX, -maxYAngle, maxYAngle);
        transform.localRotation = Quaternion.Euler(rotationX, 0.0f, 0.0f);
        if (Input.GetKeyUp(KeyCode.Escape))
        {
            Cursor.lockState = CursorLockMode.None;
        }
    }
}
ускорение
using UnityEngine;
public class shift : MonoBehaviour
{
    private bool isMoving = false;
    private float movementSpeed = 4.0f;
    void FixedUpdate()
    {
        if (Input.GetKeyDown("w"))
        {
            isMoving = true;
        }
        if (Input.GetKeyUp("w"))
        {
            isMoving = false;
        }
        if (Input.GetKey(KeyCode.LeftShift) & isMoving == true)
        {
            transform.position += transform.forward * Time.deltaTime * movementSpeed;
        }
    }
}
прыжок
using UnityEngine;
public class jump : MonoBehaviour
{
    private float jumpHeight = 7f;
    private Rigidbody rb;
    private void Start()
    {
        rb = GetComponent<Rigidbody>();
    }
    private void FixedUpdate()
    {
        if (Input.GetButtonDown("Jump"))
        {
            RigidbodyJump();
        }
    }
    private void RigidbodyJump()
    {
        rb.AddForce(Vector3.up * jumpHeight, ForceMode.Impulse);
    }
}
Управление не супер хорошее, как минимум присутствует двойной прыжок, но работает. Также паралельно создаю карту в Blender, и когда дело дошло до работы с ней в Unity я начал накладывать Коллайдеры на объекты и столкнулся с такой проблемой:
Коллайдеры которые я накладываю на дорогу (пол) работают (вся карта импортировалась как один asset). Но самое интересное заключается в том что если я дам коллайдер зданию или просто препятствию ничего не будет работать, а если я запрыгну на верх здания все работает, и также если подпрыгну и залечу в стену я тоже не буду падать (это работает на любой объект который может заблокировать движение, даже который создал в Unity, при том что на обоих объектах стоят коллайдеры). 
Кто знает помогите пожалуйста, как исправить данную проблему и сделать так что бы коллайдеры работали правильно.