Cocos2d-x物理引擎世界的使用

一、物理场景的创建creatScene:

 1、auto scene = Scene::createWithPhssics();

设置重力:Vect gravity(0,1.0f);

为场景设置重力:scene->getPhysicsWirld()->setGravity(gravity);

 2、开启物理场景的测试模式

scene->getPhysicsWorld()->setDebugDrawMask(PhysicsWorld::DEBUGDRAW_ALL);

 3、创建场景边界

Size visibleSize =Director::getInstance()->getVisibleSize();

auto body =PhysicsBody::createEdgeBox(Size(visibleSize.width,visibleSize.height),PHYSICSBODY_MATERIAL_DEFAULT,3);

4、场景是用来添加节点的,所以创建的钢体必须保存在一个节点中

auto node =Node::create();

node->setPosition(Vec2(visibleSize.width/2, visibleSize.height/2));

    node->setPhysicsBody(body);

    scene->addChild(node);

5、创建一个Layer,添加到场景中去

  6、背景层可以单独创建一个类,将其加入到物理场景中

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

  以上都是在场景中完成的!

二、初始化中添加角色等信息 

  1、创建主角并添加到当前使用的层中

  2、添加Cocos Studio中的界面元素

  3、事件碰撞回调器等

  4、要重写碰撞检测器的方法:

//碰撞检测

    bool onContactBegin(PhysicsContact& contact);

  三、碰撞监测的方法

class EventListenerPhysicsContact

1、两个物体接触的时候相应此事件,相当时触摸事件中的onBegin()等4个方法

std::function<bool(PhysicsContact& contact)> onContactBegin;

2、两个物体正在接触时,返回true执行函数内容,返回false不执行

std::function<bool(PhysicsContact& contact,PhysicsContactPreSolve& solve)> onContactPreSolve;

3、在接触时,发生的事件

std::function<void(PhysicsContact& contact,const PhysicsContactPostSolve& solve)> onContactPostSolve;

4、分离时响应

std::function<void(PhysicsContact& contact)> onContactSeperate;



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值