我对使用iPhone的Cocos2d相当陌生,而且触摸位置有问题。目前,我只是试图在屏幕上触摸并移动一个精灵,当图层不移动时以及当我翻译图层时(在我的情况下在X方向上改变self.position),这可以正常工作,但是当我缩放我的图层(例如:self.scale = .5)触摸不再移动精灵。我做了很多论坛搜索/谷歌搜索,我认为我的问题与我的坐标变换(节点空间/世界空间等)有关,但我不是100%确定的。我注意到当我缩放时,如果我点击精灵所在的位置而没有缩放,那么我可以移动精灵。这让我相信我的转换没有考虑到这个尺度。cocos2d - 刻度后不再正常工作
这里是坐标变换我目前使用得到的触摸位置的代码:
- (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;
}
}
让我知道如果您需要了解更多信息,并感谢您的阅读!
嗯,我想你需要使用convertToWorldSpace那里,因为你想要的位置没有转换到图层的空间(这是缩放)。可能是错误的。 – LearnCocos2D 2012-07-15 22:43:51