我对使用 Cocos2d for iPhone 比较陌生,并且我遇到了触摸位置的问题。目前,我只是想在屏幕上触摸和移动精灵,当图层未移动以及平移图层时(在我的情况下,在 X 方向上更改 self.position),这可以正常工作,但是,当我缩放时我的图层(例如:self.scale = .5)触摸不再移动精灵。我做了很多论坛搜索/谷歌搜索,我认为我的问题与我的坐标变换(节点空间/世界空间等)有关,但我不是 100% 确定。我确实注意到,当我缩放时,如果我单击没有缩放的精灵所在的位置,那么我可以移动精灵。这让我相信我的转换没有考虑到规模。
这是我目前用来获取触摸位置的坐标变换代码:
- (void)ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *myTouch = [touches anyObject];
CGPoint location = [myTouch locationInView:[myTouch view]];
location = [self convertToNodeSpace:location];
location = [[CCDirector sharedDirector] convertToGL:location];
}
这是检查位置(与上面相同的位置变量)是否正在触摸精灵的代码,尽管我更加确信这段代码是正确的,谁知道呢!
for (CCSprite *sprite in movableSprites) {
if (CGRectContainsPoint(sprite.boundingBox, touchLocation)) {
NSLog(@"Woohoo, you touched a sprite!");
break;
}
}
如果您需要更多信息,请告诉我,感谢您的阅读!