Вот код, вроде ошибок никаких нет. Скрипт весит на освещении в obj вставлен cube. Игра в 2d
public GameObject obj;
	private GameObject inst_obj;
	[SerializeField]
	private float speed = 4f;
    // Start is called before the first frame update
    void Start()
    {
        inst_obj = Instantiate(obj, new Vector3 (0, 0, 0), Quaternion.identity) as GameObject;
    }
    // Update is called once per frame
    void Update()
    {
			float zPos = Input.GetAxis("Vertical");
			inst_obj.transform.Translate(Vector3.forward * speed * zPos * Time.deltaTime);
    }