我使用以下代码检查玩家的点是否在圆形区域中:
if ([circle.presentationLayer hitTest:player.position])
{
NSLog(@"hit");
}
我的圈子是一个 CAShapeLayer:
CAShapeLayer *circle = [CAShapeLayer layer];
CGFloat radius = 50;
[circle setMasksToBounds:YES];
[circle setBackgroundColor:[UIColor redColor].CGColor];
[circle setCornerRadius:radius1];
[circle setBounds:CGRectMake(0.0f, 0.0f, radius *2, radius *2)];
[self.view.layer addSublayer:circle];
碰撞检测以这种方式工作得很好。
现在我不想用一个圆形图层来测试玩家的位置,而是用一个沿着自定义路径绘制的 CAShapeLayer:
CAShapeLayer *customLayer = [CAShapeLayer layer];
customLayer.path = customPath.CGPath;
customLayer.fillColor = [UIColor yellowColor].CGColor;
customLayer.shouldRasterize = YES;
customLayer.opacity = 0.2;
[self.view.layer addSublayer: customLayer];
当我想用自定义层来测试玩家的位置时,hittest 不再起作用。
我怎么解决这个问题?