Вы сами ответили в комментариях.Персонаж никогда не будет точно таким же y-pos, как птица, так что вам нужно проверить, находится ли персонаж над птицей.Попробуйте это:
public Transform target;
public GameObject Coin;
private bool _birdGaveCoin = false;
void Update()
{
transform.Translate(Vector2.left * 10f * Time.deltaTime);
if (transform.position.y <= target.position.y && !_birdGaveCoin)
{
Instantiate(Coin, transform.position, Quaternion.identity);
_birdGaveCoin = !_birdGaveCoin;
}
}
Итак, чтобы обернуть это: поплавки безумно точны.Поэтому может случиться так, что один кадр вашего персонажа находится на 3.99999f, а птица - на 4.00000f, а следующий кадр - на 4.00001f, так что технически это не то же самое.