Cocos2d/Box2dアプリで落下物をタップしようとしています。
これが私のtouchesBeginコードです:
- (void)ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *myTouch = [touches anyObject];
CGPoint location = [myTouch locationInView:[myTouch view]];
location = [[CCDirector sharedDirector] convertToGL:location];
b2Vec2 locationWorld = b2Vec2(location.x/PTM_RATIO, location.y/PTM_RATIO);
for(b2Body *b = world->GetBodyList(); b; b=b->GetNext()) {
b2Vec2 bPos = b->GetPosition();
for (b2Fixture *f = b->GetFixtureList(); f; f=f->GetNext()) {
if (f->TestPoint(locationWorld)) {
NSLog(@"hit it!");
}
}
}
私の世界には、地面と落下するオブジェクトの2つのオブジェクトがあります。私は重力が本当に遅いので、それに触れることは問題ではないはずです。奇妙なことに、私の立場はかなりずれているように見えます!
前回の実行では、locationWorld(タップした場所)は次のとおりです。
Printing description of locationWorld:
(b2Vec2) locationWorld = {
x = 7.90625
y = 9.875
}
私は外側のループを2回、各ボディに1回ずつ通過し、次のようになりました。
Printing description of bPos:
(b2Vec2) bPos = {
x = 3.03125
y = 19.6643
}
Printing description of bPos:
(b2Vec2) bPos = {
x = 8.59375
y = 17.4969
}
奇妙なことに、(8.59、17.49)で報告された2番目のボディは落下するオブジェクトであるはずですが、Y座標はかなり離れています。
これは私の最初のcocos2d/box2dアプリなので、明らかな何かが欠けていると確信しています。私はしばらくグーグルしてきました、そしてこれはそれがうまくいくはずのようです。
助けてくれてありがとう。
以下の私の答えを見てください、私のコードはここに正しいです、私は私の備品を間違ってセットアップしています。