こんにちは、私はその点について多くの質問を準備していますが、実際にはまだ正しいことを得ていませんでした。cocos2Dのタッチでの問題
..だから、これは問題..です
これは、そのためにとても残念cocos2d、と私の最初のプロジェクトです。
私は1つのシーンを持っているが、私は名前グリッドと、このグリッドの内側に一つの層を持っている内ゲームプレイと呼ばれる、(あまりにも層)ブロック多くの多くを持っています。
ブロックに触れるときにチェックする必要があります。これはInterface Builderでこれを行うので、touchesBeginを呼び出すと正確なタッチが1つのビューに表示されます。しかし、cocos2Dでは、私はオブジェクトの位置を確認し、右のテストをヒットしていないことを理解していますか?
だから私のtouchesBeginは、このようなものです:
- (void)ccTouchesBegan:(NSSet*)touches withEvent:(UIEvent*)event
{
UITouch *touch = [touches anyObject];
CGPoint location = [touch locationInView: [touch view]];
//location = [[Director sharedDirector] convertCoordinate: location];
for(int i = 0; i < [arrAllBlocks count]; i++)
{
for (int j = 0; j < [[arrAllBlocks objectAtIndex:i] count]; j++)
{
Block *tempBlock = [[arrAllBlocks objectAtIndex:i] objectAtIndex:j];
CGRect mySurface = (CGRectMake(tempBlock.position.x, tempBlock.position.y, tempBlock.contentSize.width,tempBlock.contentSize.height));
if(CGRectContainsPoint(mySurface, location))
{
NSLog(@"Hit Positions %fl:%fl",location.x,location.y);
NSLog(@"Object Positions %fl:%fl",tempBlock.position.x,tempBlock.position.y);
NSLog(@"Object Color:%@ hited", tempBlock.strName);
}
}
}
}
最初の問題がある:これは逆さに見えます!最初の行でこのブロックの1つをクリックすると!私は最後の行にブロックを取得する!私は本当にそれを取得しないでください!そして、ヒットは私に完璧なseens!そして、私がconvertCoordinateこれはさらに悪い!
誰かが私を助けることができますか?そして悪い英語のために残念です=/
OpenGLは、残りのiPhoneの仕組みから上下逆の座標を使用します。私はCocos2Dがどのようにその問題を処理しているのかわかりませんが、はい、迷惑です。 –