HelloWorldLayer.mm ファイルでアクセスしようとしている b2Body を返すクラスを作成する必要があります。以下のサークルクラスを参照してください。
サークル.h
#import <Foundation/Foundation.h>
#import "cocos2d.h"
#import "Box2D.h"
#import "PhysicsSprite.h"
#define PTM_RATIO 32
@interface Circle : CCLayer {
}
+(b2Body *)rCircle;
@end
そしてCircle.mm
#import "Circle.h"
@implementation Circle
+(b2Body *)rCircle {
//body and fixture defs for circleSprite
b2World *world_;
b2BodyDef bodyDef;
bodyDef.type = b2_dynamicBody;
b2FixtureDef fixtureDef;
fixtureDef.density = 0.1;
b2PolygonShape polygonShape;
fixtureDef.shape = &polygonShape;
PhysicsSprite* circleBodySprite = [PhysicsSprite spriteWithFile:@"circleB.png"];
//[self addChild:circleBodySprite z:1];
//body with circle fixture
b2CircleShape circleShape;
circleShape.m_radius = circleBodySprite.contentSize.width/2 / PTM_RATIO;
fixtureDef.shape = &circleShape;
b2Body* chainBase = world_->CreateBody( &bodyDef );
chainBase->CreateFixture( &fixtureDef );
[circleBodySprite setPhysicsBody:chainBase];
return chainBase;
}
@end
次の行を指す EXC_BAD_ACCESS エラーが発生し続けます。
b2Body* chainBase = world_->CreateBody( &bodyDef );
何を間違えたのかわからない。b2Body
また、次の方法で HelloWorldLayer.mm にアクセスしています。
[Circle rCircle];
これもEXC_BAD_ACCESS
エラーになります。
b2Body
HelloWorldLayer.mm でジョイントを作成できるように、クラスが を返すようにします。