0
NSmutableArrayまたはNSArrayにb2bodyまたはb2fixtureを追加できますか?
私はいくつかのソリューションを探していましたが、そのうちの1つは、まずNSValueに挿入してからnsmutable配列に値を追加する必要があると言います。ので、私は私のコードでこれを書く:b2bodyおよびb2固定配列
// Create ball body
b2BodyDef ballBodyDef;
ballBodyDef.type = b2_dynamicBody;
ballBodyDef.position.Set(0/PTM_RATIO, 300/PTM_RATIO);
ballBodyDef.userData = [ballSpriteArray objectAtIndex:a];
_ballBody = _world->CreateBody(&ballBodyDef);
// Create circle shape on ball
b2CircleShape circle;
circle.m_radius = 30.0/PTM_RATIO;
// Create shape definition and add to body
b2FixtureDef ballShapeDef;
ballShapeDef.shape = &circle;
ballShapeDef.density = 0.5f;
ballShapeDef.friction = 0.5f;
ballShapeDef.restitution = 0.6f;
_ballFixture = _ballBody->CreateFixture(&ballShapeDef);
fixValue = [NSValue valueWithBytes:&_ballFixture objCType:@encode(struct b2Fixture)];
[ballFixtureArray addObject:fixValue];
//memberi impulse awal terhadap bola
b2Vec2 force = b2Vec2(5, 10);
_ballBody->ApplyLinearImpulse(force, ballBodyDef.position);
bodyValue = [NSValue valueWithBytes:&_ballBody objCType:@encode(struct b2Body)];
[ballBodyArray addObject:bodyValue];
そのNSMutableArrayの上のすべてのb2Fixtureとb2bodyを得るために、私はCCtouchBeganメソッドで次のように行った:
for(NSValue *val in ballFixtureArray)
{
b2Fixture *ballFix;
[val getValue:&ballFix];
if (ballFix->TestPoint(locationWorld)) {
//if([ballFixtureArray objectAtIndex:0]->TestPoint(locationWorld)){
for (NSValue *bodyVal in ballBodyArray){
b2MouseJointDef md;
md.bodyA = _groundBody;
b2Body *ballBody;
[bodyVal getValue:&ballBody];
md.bodyB = ballBody;
md.target = locationWorld;
md.collideConnected = true;
md.maxForce = 1000.0f * ballBody->GetMass();
_mouseJoint = (b2MouseJoint *)_world->CreateJoint(&md);
ballBody->SetAwake(true);
}
}
}
が、それはただ一方で、アプリケーションの作業をdoesntの私は画面上のすべての場所に触れるとクラッシュします。
誰かが私を助けることができます.. ??すべての事前のための前
のthnx ...
よろしく