如果我定义了一个开放的UIBezierPath并将其设置为碰撞边界:
_containerPath = [UIBezierPath bezierPathWithArcCenter:center
radius:radius
startAngle:M_PI
endAngle:0
clockwise:NO];
[_collisionBehavior addBoundaryWithIdentifier:@"containerBoundary" forPath:_containerPath]; 然后打开重力,在“碗”内部释放的物体会尊重下边界,但从碗上方释放的物体会停留在假设不存在的一侧。这是预期的行为吗?

在图片中,红色矩形是从上方放置的;动态动画制作器的参考视图是浅灰色矩形。它从上面掉下来,停在看不见的线上。
我已经确认,如果你翻转bezier路径,红色矩形实际上尊重曲线边界;我也尝试过使用开放(双边)三角形而不是曲线路径-同样的结果。
发布于 2015-03-14 08:20:59
您看到的行为似乎与使用bezier路径填充时看到的行为相同。如果你画一个"V“并填充它,它的行为就像是一个封闭的路径。有了碰撞边界,您可以通过添加两条线来创建一个开放的"V“,这两条线的名称分别为:fromPoint:toPoint:。我不知道有没有别的办法来解决这个问题。对于你的半圆,我假设你可以用上面的方法添加一系列直线来近似它。在使用50到100行之前,我已经近似了圆,它们看起来与使用BezierPathWithOvalInRect得到的非常接近。我不知道当作为碰撞边界使用时,这是否会给系统带来严重的负担。
https://stackoverflow.com/questions/29043415
复制相似问题