Я ищу способы создания тела в Box2D с первого прикосновения
и уничтожь его вторым прикосновением.
Для создания тела я использую этот метод:
(void)ccTouchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *touch = [touches anyObject];
CGPoint location = [touch locationInView: [touch view]];
location = [[CCDirector sharedDirector] convertToGL: location];
if (touch.tapCount > 1) {
CGSize winSize = [CCDirector sharedDirector].winSize;
CCSprite *sprite = [CCSprite spriteWithFile:@"sprite.png" rect:CGRectMake(0, 0, 90, 90)];
sprite.position = ccp(location.x/PTM_RATIO, location.y/PTM_RATIO);
sprite.tag = 7;
[self addChild: sprite];
b2BodyDef ballBodyDef2;
ballBodyDef2.type = b2_dynamicBody;
ballBodyDef2.position.Set(location.x/PTM_RATIO, location.y/PTM_RATIO);
ballBodyDef2.userData = sprite;
b2Body *body2 = _world->CreateBody(&ballBodyDef2);
b2CircleShape circle;
circle.m_radius = 22.0/PTM_RATIO;//(arc4random()*26.0)/PTM_RATIO;
b2FixtureDef ballShapeDef2;
ballShapeDef2.shape = &circle;
ballShapeDef2.density = 1.0f;
ballShapeDef2.friction = 0.5f;
ballShapeDef2.restitution = 0.2f;
body2->CreateFixture(&ballShapeDef2);
} else {
b2Vec2 locationWorld = b2Vec2(location.x/PTM_RATIO, location.y/PTM_RATIO);
for (b2Body* b = _world->GetBodyList(); b; b = b->GetNext()) {
b2Fixture *bf1 = b->GetFixtureList();
if (bf1->TestPoint(locationWorld)) {
CCSprite *tempSprite = (CCSprite *) b->GetUserData();
if (tempSprite .tag==7) {
[self removeChild:tempSprite cleanup:YES];
_world->DestroyBody(b);
}
}
}
}
}
С помощью этого метода, чтобы создать тело, я должен коснуться экрана 2 раза, а затем еще раз, чтобы уничтожить его. Что мне нужно сделать, чтобы вы один раз нажали, чтобы создать тело, а затем еще раз, чтобы уничтожить?