원형 모양으로 터치를 감지해야하지만, 모양이 원형처럼 보이지만 터치 가능한 영역은 여전히 직사각형입니다. 사용자가 내 서클에 닿은 경우에만 터치를 감지합니까?원형 SKShapeNode에서 접촉 감지?
// Here I add the Shape
_circle = [SKShapeNode node];
_circle.name = @"circle";
_circle.position = CGPointMake(CGRectGetMidX(self.frame), CGRectGetMidY(self.frame));
[_circle setPath:CGPathCreateWithRoundedRect(CGRectMake(-70, -70, 140, 140), 70, 70, nil)];
_circle.strokeColor = _circle.fillColor = [UIColor colorWithRed:255.0/255.0 green:0.0/255.0 blue:0.0/255.0 alpha:1.0];
[self addChild:_circle];
//...
// Listening to touches
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch *touch = [touches anyObject];
CGPoint location = [touch locationInNode:self];
if (CGRectContainsPoint(_circle.frame, location)) {
NSLog(@"Circle is touched");
}
}
이 질문을보십시오. http://tackoverflow.com/questions/13291919/detect-touches-only-on-non-transparent-pixels-of-uiimageview- 효율적으로 비 트랜스 포렌트에서 터치를 감지하고자 할 수 있습니다. 비트 만 –
문제는 모든 프레임에서 이와 같은 비교를 실행하고 있으므로 각 프레임의 모양 픽셀을 개별적으로 검사하면 성능이 좋지 않을 수 있다는 것입니다. – lisovaccaro