1
在下面的照片中,每個三角形都是一個單獨的子類SKShapeNode。你如何識別觸摸了哪個三角形?目前在場景的toucheBegan:方法中,觸摸網格會檢測兩個三角形,因爲它們的框架是方形的。檢測按鈕的三角形網格中的觸摸?
在下面的照片中,每個三角形都是一個單獨的子類SKShapeNode。你如何識別觸摸了哪個三角形?目前在場景的toucheBegan:方法中,觸摸網格會檢測兩個三角形,因爲它們的框架是方形的。檢測按鈕的三角形網格中的觸摸?
我設法通過設置繪製三角形的三角類屬性的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.
}
}
}
}
考慮到三角形形狀,您必須自己計算觸摸的封閉形狀。 [如何確定三角形中的點?](http://stackoverflow.com/q/2049582) –