Потому что MovePosition принимает в качестве аргумента новую позицию. Вот оно у тебя и переместилось в Vector2.up * speed * Time.deltaTime и трется там
Какой потрясающий пример ошибки XYZ. Вам не надо вообще все вот это - просто потому, что это неправильное использование PlayerPrefs. Префсы нужны как раз для хранения информации МЕЖДУ запусками. Т.е. их как раз надо на выходе\сворачивании\сейвпоинтах СОХРАНЯТЬ, а при старте игры - ЗАГРУЖАТЬ. Это именно сейвГейм.
А в рамках запущенной игры достаточно все держать в памяти
Вопрос сформулирован конечно так себе - но этот код рабочий. в Money_S запишется последнее значение money, уже с -100. Удалять ничего не надо. Возможно стоит вызвать Save у плеерпрефсов
Ну во первых - уйти от префабов и хранить модель отдельно.
Во вторых - самое банальное - проверять паттернами. Типичная задача - найти есть ли в массиве паттерн.
Сравнивать флоты как принято сравнивать флоты - с определенным допуском.
Прям в юнити есть для этого метод Approximatly. Но он может оказаться сильно точным - так что просто сравните модуль разницы с неким эпсилоном
Есть такое понятие - весовой рандом.
У каждого айтема есть вес. При генерации - веса суммируются, генерируется число от 0 до суммы, и дальше последовательно проходим по всем айтемам суммируя их веса, пока сумма не станет больше сгенерированного рандома. На каком айтеме это произошло - тот и выпал. Описание немного корявое, но можете загуглить "весовой рандом".
10 годиков в геймдеве. Переработок можно избежать, в целом - но это не просто, и авральные ситуации будут 100%. + да, это должна быть увлеченность обязательно - делать продукт, а не задачи.
голодная смерть. Одиночки не зарабатывают. Те, которые якобы зарабатывают - это единицы выстреливших продуктов из многих тысяч. Погуглите про ошибку выжившего.
1. Марш учить юнити по туториалам. А то и сишарп сначала, если вообще новичок.
2. Так 2д или не 2д? Если коллайдер 2д, то и нужен OnCollisionEnter2D. И коллайдер игрока тогда тоже должен быть 2д. Мешать 2д и 3д ФИЗИКУ низзя