C ++ SDL столкновение, если скрыто на определенной поверхности - PullRequest
1 голос
/ 09 марта 2011

У меня есть простая игра, которая включает в себя 2 поверхности, на которые я делаю спрайты. Одна, я блещу по маленьким квадратикам, через которые должен прыгать ваш персонаж, вторая - это поверхность, на которую я блею спрайтами своих персонажей. Я хочу сделать обнаружение столкновений, когда он обнаруживает только те объекты, которые находятся на поверхности, на которой НЕ находится мой персонаж, если это имеет смысл. По сути, думайте об этом как о двух слоях, у первого есть препятствия, у второго - мой характер. Я хочу, чтобы он обнаруживал спрайты только как препятствия на первом слое. Есть ли способ сделать это?

Ответы [ 2 ]

0 голосов
/ 09 марта 2011

Обычно обнаружение столкновений выполняется на абстрактной геометрии, а не на пиксельных данных, и, как таковой, SDL не обеспечивает функциональность обнаружения столкновений.Если вы используете абстрактное представление (например, квадрат или круг), то, где вы блицуете, ваши поверхности на самом деле не имеют никакого значения для столкновений - вы можете сравнивать любые объекты, которые вы хотите, независимо от того, какие поверхности были перетянуты на другие поверхности.

0 голосов
/ 09 марта 2011

Один подход, который приходит на ум, заключается в следующем:
Во-первых, разделите объекты на слой, скажем std::vector<MyObjects*> CharLayerObjects; (std::vector для случаев, когда у вас есть больше объектов на этой плоскости, таких как окружение) и std::vector<MyObjects*> CollisionLayerObjects;,Затем просто протестируйте символ с объектами в векторе CollisionLayerObjects.Конечно, это работает, только если обе поверхности имеют одинаковые размеры, но я думаю, что этого следовало ожидать.

...