h文件
</pre><pre name="code" class="html"><pre name="code" class="cpp">#ifndef _BOX2D_TEST_H_
#define _BOX2D_TEST_H_
#include "cocos2d.h"
#include "Box2D/Box2D.h"
using namespace cocos2d;
class ContactListener;
class PhysicSprite :public CCSprite
{
public:
PhysicSprite();
void setPhysicsBody(b2Body* body);
virtual bool isDirty();
virtual CCAffineTransform nodeToParentTransform(void);
private:
b2Body* m_pBody;
};
class Box2DTestLayer :public CCLayer
{
CCTexture2D* m_pSpriteTexture;
b2World* world;
b2ContactListener* contactListener;
public:
Box2DTestLayer();
~Box2DTestLayer();
void init_physics();
void createResetButton();
void reset(CCObject* pSender);
void addNewSpriteAtPosition(CCPoint p);
void update(float dt);
virtual void ccTouchesEnded(CCSet* touches, CCEvent* event);
};
class Box2DTestScene:public CCScene
{
public:
void runThisTest();
};
class ContactListener : public b2ContactListener
{
private:
//两个物体开始接触时会响应
virtual void BeginContact(b2Contact* contact);
//分离时响应
virtual void EndContact(b2Contact* contact);
public:
void callback1(CCNode* pSender);
};
#endif
cpp文件:
</pre><pre name="code" class="html">#include "Box2dTest.h"
#include "cocos-ext.h"
#include "VisibleRect.h"
USING_NS_CC_EXT;
#define PTM_RATIO 32
enum
{
kTagparent = 1, //碰撞小球tag
kTagSpriteContact=2,//标记碰撞点红色的tag
};
Box2DTestLayer::Box2DTestLayer()
:m_pSpriteTe