UICollisionBehavior将开放路径视为已关闭?
如果我定义一个打开的UIBezierPath并将其设置为碰撞边界:
_containerPath = [UIBezierPath bezierPathWithArcCenter:center
radius:radius
startAngle:M_PI
endAngle:0
clockwise:NO];
[_collisionBehavior addBoundaryWithIdentifier:@"containerBoundary" forPath:_containerPath];
然后转动重力,在“碗”内部释放的物体就会与下部边界相对,但从碗上方释放的物体停在假定不存在的一侧。 这是预期的行为?
在图片中,红色的矩形从上面掉落; 动态动画的参考视图是浅灰色的矩形。 它从上面掉下来,停在无形的线上。
我已经证实,如果你将贝塞尔路径翻过来,红色矩形实际上就是尊重曲线边界; 我也尝试过使用开放(双面)三角形而不是曲线路径 - 结果相同。
你看到的行为似乎与你看到的填充一条贝塞尔路径的行为相同。 如果你画一个“V”并填充它,它就像是一个封闭的路径一样。 通过碰撞边界,可以通过添加两行addBoundaryWithIdentifier:fromPoint:toPoint:来打开“V”。 我不知道这有什么其他解决方法。 对于你的半圈,我想你可以用上面的方法添加一系列直线来逼近它。 在使用50到100行之前,我已经近似圆形,看起来非常接近BezierPathWithOvalInRect的内容。 我不知道这是否会在用作碰撞边界时对系统造成严重的负担。
链接地址: http://www.djcxy.com/p/96789.html