UICollisionBehavior рассматривает открытый путь как закрытый?

Если я определю открытый UIBezierPath и установлю его как границу столкновения:

_containerPath = [UIBezierPath bezierPathWithArcCenter:center
                                                radius:radius
                                            startAngle:M_PI
                                              endAngle:0
                                             clockwise:NO];

[_collisionBehavior addBoundaryWithIdentifier:@"containerBoundary" forPath:_containerPath];                                                     

и затем включите гравитацию, объекты, которые выпущены внутри "чаши", уважают нижнюю границу, но объекты, выпущенные сверху чаши, останавливаются на предположительно несуществующей стороне. Это ожидаемое поведение?

падающий прямоугольник

На рисунке красный прямоугольник был сброшен сверху; контрольный вид для динамического аниматора - светло-серый прямоугольник. Он упал сверху и остановился у невидимой линии.

Я подтвердил, что если вы перевернете путь Безье, красный прямоугольник действительно будет соответствовать изогнутой границе; Я также попробовал это, используя открытый (двусторонний) треугольник вместо изогнутого пути - тот же результат.

1 ответ

Поведение, которое вы видите, кажется таким же, как и то, что вы видите для заполнения более безумным путем. Если вы рисуете "V" и заполняете его, он ведет себя так, как если бы это был замкнутый путь. С границами столкновения вы можете сделать открытое "V", добавив две строки с помощью addBoundaryWithIdentifier: fromPoint: toPoint:. Я не знаю, есть ли другой способ обойти проблему. Я полагаю, что для вашего полукруга вы можете аппроксимировать его серией прямых линий, добавленных с помощью метода, описанного выше. Я округлил круги, прежде чем использовать от 50 до 100 линий, которые выглядят очень близко к тому, что вы получаете с помощью BezierPathWithOvalInRect. Я не знаю, создает ли это серьезную нагрузку на систему при использовании в качестве границы столкновения.

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