Почему столкновение работает должным образом для физики на основе выпуклого многоугольника

Я установил SKSprite (s1), чтобы иметь физическую телу с полигоном из пути:

s1.physicsBody = [SKPhysicsBody bodyWithPolygonFromPath:path];

а другой (s2) имеет физическую структуру, сгенерированную из окружающего его прямоугольника:

s2.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:e.size];

и столкновения двух спрайтов в порядке, они случаются только тогда, когда сталкиваются фактические пиксели от траектории многоугольника s1 и окружающего прямоугольника от s2 (а не окружающие прямоугольники от каждого из спрайтов). Это отлично. Но касание, перемещаемое в s1 - которое имеет основанное на многоугольнике тело - происходит при касании его окружающего прямоугольника - даже если оно имеет основанную на многоугольнике физику тела (см. Код выше для установки physBody объекта s1). Как я могу решить эту проблему и заставить это событие срабатывать только тогда, когда оно должно происходить, когда происходит прикосновение к фактическим пикселям (определенным физическим телом на основе многоугольника)?

Я пытался обнаружить тело в точке:

SKPhysicsBody * draggedOverBody = [self.physicsWorld bodyAtPoint:location];

draggedOverNode = draggedOverBody.node;

а также он обнаруживает только ограничивающий прямоугольник вместо физики тела многоугольника. Очень расстраивает.

0 ответов

Другие вопросы по тегам