Я думаю, что проблема на самом деле уже лежит в строке раньше:
if(cube1.transform.position.y == y)
Поскольку ваш первый объект использует гравитацию, каковы шансы, что позиция в одном кадре соответствует точно y
?Кроме того, сравнение двух значений float
может никогда не совпадать, даже если значение должно быть одинаковым, для получения дополнительной информации см. Math.Approximately
.
Это почти никогда не будет верным, поэтому ваш коддаже не достигает Input
части.
Теперь вы можете, конечно, использовать
if(Math.Approximately(cube1.transform.position.y, y)
, пытаясь найти точное значение y
, но шансы, которые соответствуют этому на бесплатнойпадающие объекты все еще очень малы!
Вместо этого вы должны использовать качественное сравнение, например <=
.Вы можете использовать более широкое приближение, используя разницу между двумя значениями (в этом примере оно совпадает, когда объект меньше, чем +-10cm
appart от ожидаемого y
):
if(cube1.transform.position.y - y <= 0.1f)
, но для быстрогодвижущиеся объекты (что обычно имеет место для свободно падающих предметов), возможно, было бы лучше просто проверить, если они меньше, чем желаемая высота:
if(cube1.transform.position.y <= y)
Это, очевидно, зависит от того, что именно ваша цель здесь.