use FindFirstObjectOfType if you can and if there's only 1 instance of it as it completely removes the sorting and should be faster that the findObjectOfType.
and if it's Unity (as your title says), you can pass things by references rather than copy by value in Unity and have them serialized via ISerializeReference :blobthumbsup:
Intersect/contains on a Rectangle is just regular method that checks if they're overlapping on static objects(mostly) and they don't do any raycast ahead of them so that's why they can fail in lotta scenarios
for example if you're linearly interpolating them, make sure the result of your speed * t * delta on your interpolator /lerp won't surpass the width / height of the target rectangle you're colliding with