我一直在努力这一段时间,并会喜欢一些帮助!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