В дополнение к другим ответам, есть некоторые вещи, которые вы можете сделать, чтобы ускорить это, если вы хотите сделать небольшую бухгалтерию в отношении «сбора» группы пикселей в блоки «известного подобного состояния». Например, вы можете хранить высоту самого высокого куска местности, так что вы можете считать само собой разумеющимся, что ракета ничего не ударит, пока она выше этого. Вы также можете сохранить высоту самого низкого «воздушного» пространства, так что вы будете знать, что если ракета достигнет такой высоты, она должна что-то поразить (хотя это лучше всего использовать для проверки работоспособности). Пройдя дальше, вы можете хранить прямоугольники, представляющие области, которые представляют собой всю местность, и другие прямоугольники, которые являются воздушными, но это может быть больше работы, чем ценности.
В конечном счете, лучшим методом, вероятно, будет «запоминать высоту каждого столбца местности», а затем просто вычислять высоту ракеты на каждом этапе ее пути. Я не могу говорить о более современных играх, но я считаю, что когда вы сделали «пещеру» в Scorched Earth, местность над этой пещерой падала прямо вниз, не оставляя никаких выступов. Если вы хотите навесы, работа будет немного больше, но это будет расширение этой основной идеи. (Подсказка: сначала получите основную идею!)
Поскольку ваша местность, по-видимому, совершенно произвольна, ярлыков здесь нет. Даже если вы заставите свою местность быть сплайном или чем-то еще, это расстроится, как только вы начнете разрушать ее, и тесты пересечения линии-сплайна являются итеративными и не идеальными или исчерпывающими и бессмысленно медленными для вашего типа проблемы.