void Update()
{
transform.Translate(Vector3.right * 0.1f);
В этой строчке ты каждый кадр что-то двигаешь, причём без какого либо условия.
Кстати, почему в 2D игре ты используешь Vector3 ? (скорее всего в этом проблема)
Ну и если не знаешь где ошибка, то добавляй переменные, по значению которых, можешь определить в каком состоянии объект.
например:
if (Input.GetKeyDown(KeyCode.Space) && isGrounded == true) ;
{
physic.AddForce(new Vector2(0, 10));
isSpace=true;
}
Так ты точно сможешь понять, в этом ли отрезке программы ошибка (isSpace должен отображаться в инспекторе).