почему надо писать именно transform.position = new Vector2(transform.position.x, transform.position.y), а не transform.position = Vector2(transform.position.x, transform.position.y)?
просто интересно, я писал всегда так. но не задумывался почему, кто-нибудь может объяснить, почему так пишется?
Потому что такой вот C#.
Чтобы поменять значение transform.position - тебе нужен новый экземпляр Vector2.
Чтобы создать новый экземпляр чего угодно в C# тебе нужно писать new.
Исключение - фабричные методы/свойства, которые сделают new вместо тебя.
Например, в случае Vector2 он мог бы выглядеть так: var newVector = Vector2.Create(x, y), но такого метода по понятным причинам нет, ибо он просто сразу будет вызывать конструктор
Ключевое слово new вызывает конструктор, соответствующий шаблону(количеству и типу входных параметров). Советую пройти курс сололеарн по шарпам, что-бы хотя-бы примерно понимать, что происходит)