Cocos2d for iPhone を使用するのは初めてで、タッチ位置に問題があります。現時点では、単に画面上でスプライトに触れて移動しようとしていますが、これは、レイヤーが移動されていないときと、レイヤーを移動するとき (私の場合は X 方向に self.position を変更するとき) に正常に機能しますが、スケーリングすると私のレイヤー(例:self.scale = .5)タッチでスプライトが動かなくなりました。私は多くのフォーラム検索/Google検索を行ってきましたが、私の問題は座標変換(ノード空間/ワールド空間など)に関係していると思いますが、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;
}
}
さらに情報が必要な場合はお知らせください。お読みいただきありがとうございます。