cocos2dx box2d例子
2013-12-24 15:21
351 查看
先右击解决方案中的libExtensions 选属性c/c++ 与处理器 预处理器定义 CC_ENABLE_CHIPMUNK_INTEGRATION=1更改为CC_ENABLE_BOX2D_INTEGRATION=1
包含头文件
#include "physics_nodes/CCPhysicsSprite.h"
#include "Box2D/Box2D.h"
USING_NS_CC_EXT;
声明变量
Texture2D* _spriteTexture; // weak ref
b2World* world;
enum {
kTagParentNode = 1,
};
#define PTM_RATIO 32
初始化图片
SpriteBatchNode* parentBar = SpriteBatchNode::create("bar.png", 50);
_spriteTexture = parentBar->getTexture();
addChild(parentBar, 0, kTagParentNode);
创建地球
void LoadingLayer::initPhysics()
{
b2Vec2 gravity;
gravity.Set(-30.0f, -20);
world = new b2World(gravity);
// Do we want to let bodies sleep?
world->SetAllowSleeping(true);
world->SetContinuousPhysics(true);
b2BodyDef groundBodyDef;
groundBodyDef.position.Set(0, 0); // bottom-left corner
b2Body* groundBody = world->CreateBody(&groundBodyDef);
b2EdgeShape groundBox;
groundBox.Set(b2Vec2(0/PTM_RATIO,80/PTM_RATIO), b2Vec2(900/PTM_RATIO,80/PTM_RATIO));
groundBody->CreateFixture(&groundBox,0);
groundBox.Set(b2Vec2(189/PTM_RATIO,0/PTM_RATIO), b2Vec2(189/PTM_RATIO,500/PTM_RATIO));
groundBody->CreateFixture(&groundBox,0);
}
添加物体
void LoadingLayer::addNewSpriteAtPosition(Point p)
{
CCLOG("Add sprite %0.2f x %02.f",p.x,p.y);
b2BodyDef bodyDef;
bodyDef.type = b2_dynamicBody;
bodyDef.position.Set(p.x/PTM_RATIO, p.y/PTM_RATIO);
b2Body *body = world->CreateBody(&bodyDef);
b2PolygonShape dynamicBox;
dynamicBox.SetAsBox(0.4, 0.4);
b2FixtureDef fixtureDef;
fixtureDef.shape = &dynamicBox;
fixtureDef.density = 1;
fixtureDef.friction = 0.1f;
body->CreateFixture(&fixtureDef);
auto parent = this->getChildByTag(kTagParentNode);
PhysicsSprite* sprite = PhysicsSprite::createWithTexture(_spriteTexture,Rect(0,0,32*2,32*2));
parent->addChild(sprite);
sprite->setB2Body(body);
sprite->setPTMRatio(PTM_RATIO);
sprite->setPosition( Point( p.x, p.y) );
}
包含头文件
#include "physics_nodes/CCPhysicsSprite.h"
#include "Box2D/Box2D.h"
USING_NS_CC_EXT;
声明变量
Texture2D* _spriteTexture; // weak ref
b2World* world;
enum {
kTagParentNode = 1,
};
#define PTM_RATIO 32
初始化图片
SpriteBatchNode* parentBar = SpriteBatchNode::create("bar.png", 50);
_spriteTexture = parentBar->getTexture();
addChild(parentBar, 0, kTagParentNode);
创建地球
void LoadingLayer::initPhysics()
{
b2Vec2 gravity;
gravity.Set(-30.0f, -20);
world = new b2World(gravity);
// Do we want to let bodies sleep?
world->SetAllowSleeping(true);
world->SetContinuousPhysics(true);
b2BodyDef groundBodyDef;
groundBodyDef.position.Set(0, 0); // bottom-left corner
b2Body* groundBody = world->CreateBody(&groundBodyDef);
b2EdgeShape groundBox;
groundBox.Set(b2Vec2(0/PTM_RATIO,80/PTM_RATIO), b2Vec2(900/PTM_RATIO,80/PTM_RATIO));
groundBody->CreateFixture(&groundBox,0);
groundBox.Set(b2Vec2(189/PTM_RATIO,0/PTM_RATIO), b2Vec2(189/PTM_RATIO,500/PTM_RATIO));
groundBody->CreateFixture(&groundBox,0);
}
添加物体
void LoadingLayer::addNewSpriteAtPosition(Point p)
{
CCLOG("Add sprite %0.2f x %02.f",p.x,p.y);
b2BodyDef bodyDef;
bodyDef.type = b2_dynamicBody;
bodyDef.position.Set(p.x/PTM_RATIO, p.y/PTM_RATIO);
b2Body *body = world->CreateBody(&bodyDef);
b2PolygonShape dynamicBox;
dynamicBox.SetAsBox(0.4, 0.4);
b2FixtureDef fixtureDef;
fixtureDef.shape = &dynamicBox;
fixtureDef.density = 1;
fixtureDef.friction = 0.1f;
body->CreateFixture(&fixtureDef);
auto parent = this->getChildByTag(kTagParentNode);
PhysicsSprite* sprite = PhysicsSprite::createWithTexture(_spriteTexture,Rect(0,0,32*2,32*2));
parent->addChild(sprite);
sprite->setB2Body(body);
sprite->setPTMRatio(PTM_RATIO);
sprite->setPosition( Point( p.x, p.y) );
}
相关文章推荐
- Cocos2dx 3.6.1运行html5的测试例子
- cocos2dx box2d 炮弹不打自己人如何做
- cocos2dx box2d 添加debugDraw
- Cocos2dx杂记:box2d初探
- 【cocos2dx】box2d使用
- 如何使用 PhysicsEditor 加快 cocos2dx-Box2D 开发
- [cocos2dx开发技巧3]工具CocosBuilder的使用--Box2d
- Box2D例子——Hello Box2D
- Box2D例子——Demo0掉落的小球
- cocos2dx 常用动作(action)例子集锦
- cocos2dx3.3 打包官方cpp-tests例子Apk
- cocos2dx-3.x物理引擎Box2D介绍
- cocos2dx中的box2d
- Cocos2dx中Box2D的简单使用
- 【独立开发者er Cocos2d-x实战 014】Cocos2dx中的TestCPP运行Box2dTest
- cocos2dx box2d 概念
- Cocos2dx-3.2自带例子的运行
- 如何使用 PhysicsEditor 加快 cocos2dx-Box2D 开发
- 【COCOS2DX-BOX2D游戏开发之四】 Box2D匀速运动
- Box2D例子——Demo1掉落的小球