 <p>I think your <code>screenHeightInWorld</code> is really a <code>screenTopInWorld</code>, a point can be anywhere in the space.</p> <p>You need the relative <strong>screen height in world</strong> coordinate. Which is actially the <strong>half of the camera frustum size</strong> if you use ortographic projection, as you think of it.</p> <p><code>float screenHeightInWorld = Camera.main.orthographicSize / 2.0f;</code></p> <p>I did not read the rest, but is probably fine, up to you how you implement this. I'd simply create an arrow method, something like <code>bool SpawnArrowAboveIfFits()</code>, which can call itself iteratively on the new instances.</p>