b2fixture から b2body にアクセスすると、EXC_BAD_ACCESS が発生します。これは、C++ で混合する ObjC 開発者であるため (box2d から始めたばかり)、C++ の知識が不足していることが原因である可能性があります。
Myb2dUserData.h
@interface Myb2dUserData : NSObject {
MyContact *climbingHoldContact;
}
@property (nonatomic, assign) MyContact *climbingHoldContact;
Myb2dUserData.mm
b2Fixture *fixA = climbingHoldContact->fixtureA;
b2Body *bodA = fixA->GetBody(); //EXC_BAD_ACCESS
b2ContactListener にclimingHoldContact を割り当てます。これは、次のコードからのほとんどのコピーです 。 cocos2d-tutorial-part-22
void MyContactListener::BeginContact(b2Contact* contact) {
MyContact myContact = { contact->GetFixtureA(), contact->GetFixtureB() };
_contacts.push_back(myContact);
b2Fixture *fixtureA = contact->GetFixtureA();
b2Body *bodyA = fixtureA->GetBody();
Myb2dUserData *userDataA = (Myb2dUserData *)bodyA->GetUserData();
bodyHoldUD.climbingHoldContact = &myContact;