Вот код, вроде ошибок никаких нет. Скрипт весит на освещении в 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);
}