2
두 바디 사이에 접촉이 이루어질 때 용접 접합을 만드는 접점 리스너를 설정했습니다. 몸은 내가 클래스연락처 리스너 클래스 내에 용접 접합부를 생성하는 데 문제가 발생했습니다.
b2World.cpp
내 방법
b2Joint* b2World::CreateJoint(const b2JointDef* def)
에 선
b2Assert(IsLocked() == false);
에 SIGABRT 가리키는가 계속 터치하면 다음의 연락처 리스너 클래스입니다 : SubcContactListener. h :
#import <Foundation/Foundation.h>
#import "cocos2d.h"
#import "Box2D.h"
#import "Spriter.h"
#import "CreateRope.h"
class SubcContactListener : public b2ContactListener {
public:
void *helloWorldLayer;
b2WeldJoint *weldJoint;
b2World *world;
void BeginContact(b2Contact* contact);
void EndContact(b2Contact* contact);
void createWeldJoint(b2Body* ABody ,b2Body* BBody);
//void destroyWeldJoint(b2WeldJoint *weldJoint);
};
SubcContactListener.mm 다음 HelloWorldLayer.mm initPhysics 방법에서 또한
#import "SubcContactListener.h"
#import "HelloWorldLayer.h"
void SubcContactListener:: BeginContact(b2Contact *contact) {
}
void SubcContactListener:: EndContact(b2Contact *contact) {
b2Fixture *fixtureA = contact->GetFixtureA();
b2Fixture *fixtureB = contact->GetFixtureB();
b2Body *fixtureABody = fixtureA->GetBody();
b2Body *fixtureBBody = fixtureB->GetBody();
// We don't care about collisions that don't involve two bodies.
if (helloWorldLayer && fixtureABody && fixtureBBody)
{
if(fixtureABody != NULL && fixtureBBody != NULL){
createWeldJoint(fixtureABody, fixtureBBody);
}
}
}
void SubcContactListener:: createWeldJoint(b2Body* ABody ,b2Body* BBody) {
// The sprite tag is 1 for the spriter sprite and 3 for the rope links.
if (ABody && BBody)
//{
CCSprite *bodyASprite = (CCSprite *) ABody->GetUserData();
CCSprite *bodyBSprite = (CCSprite *) BBody->GetUserData();
NSInteger bodyASpriteTag = bodyASprite.tag;
NSInteger bodyBSpriteTag = bodyBSprite.tag;
if (((bodyASpriteTag == 1) && (bodyBSpriteTag == 3)) ||
((bodyASpriteTag == 3) && (bodyBSpriteTag == 1)))
{
//creation of weldjoint
if (ABody!= NULL && BBody != NULL) {
b2WeldJointDef weldJointDef;
weldJointDef.Initialize(ABody,
BBody,
ABody->GetWorldCenter());
weldJointDef.collideConnected = false;
weldJoint = (b2WeldJoint*) ABody->GetWorld()->CreateJoint(&weldJointDef);
}
}
}
}
: 오류에서
// Create contact listener
contactListener = new SubcContactListener();
contactListener->helloWorldLayer = self;
world->SetContactListener(contactListener);
는 나는 너무 확실하지 용접 조인트 함께 할 수있는 뭔가가있다 생각합니다. 도와주세요.