在下面的照片中,每个三角形都是一个单独的子类SKShapeNode。你如何识别哪个三角形被触摸?目前在场景中的toucheBegan:方法中,触摸网格会检测到两个三角形,因为它们的框架是方形的。
答案 0 :(得分:2)
我设法通过设置将三角形绘制为Triangle类上的属性的UIBezierPath路径来解决此问题。在场景的toucheBegan:方法中,我检查触摸是否包含在Triangle的touchableArea UIBezierPath属性中。
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch *touch = [touches anyObject];
CGPoint position = [touch locationInNode:self];
NSArray *nodes = [self nodesAtPoint:position];
for (TrianglePiece *triangle in nodes) {
if ([triangle isKindOfClass:[TrianglePiece class]]) {
position = [touch locationInNode:triangle];
if ([triangle.touchableArea containsPoint:position]) {
// Perform logic here.
}
}
}
}