我一直在努力這一段時間,並會喜歡一些幫助!locationInNode:縮放場景後不準確
我在精靈套件中有一個瓷磚地圖,用戶可以點擊任何瓷磚和發生的事情。爲了得到他們敲敲瓷磚,我用的是這樣的:
-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch *touch = [touches anyObject];
CGPoint touchLocation = [touch locationInNode:_mapLayer];
SKNode *tile = [_mapLayer nodeAtPoint:touchLocation];
// Do things with the tile...
}
不過,我也希望用戶能夠放大和縮小,如果需要得到地圖的更好的視野。這是很容易的,我設置了捏識別器,並使用縮放場景:
-(void)handlePinch:(UIPinchGestureRecognizer *)recognizer {
[self runAction:[SKAction scaleBy:recognizer.scale duration:0]];
}
一切正常,但一旦場景的比例是其他任何大於1.0,則locationInNode:
方法返回錯誤座標,導致nodeAtPoint:
返回錯誤的圖塊。
例如,如果我在刻度爲1.0時點擊一個圖塊,則一切正常。但是,如果將場景縮小到0.9比例並點擊同一個圖塊,則locationInNode:
會返回錯誤的座標,因此將選擇與我點擊的圖塊不同的圖塊。
難道我做錯了什麼?
編輯:我創建了一個圖像來說明我的問題響應安德烈,這可能有助於: http://i.imgur.com/N1XcyNx.png
阿!非常感謝你的配偶,那就是我做錯了。 – Koonga