cocos3.7物理引擎基本使用

来源:互联网 发布:子曰由诲女知之乎翻译 编辑:程序博客网 时间:2024/05/28 04:53

我们将完成一个简单的实例来介绍cocos物理的引擎的基本使用:
这里写图片描述
我们要实现的是一个小球不停的在屏幕中进行弹跳,没有重力,完全弹力。

  • 首先创建一个场景,该场景不能使普通的场景,必须要先创建物理场景才能在该场景中加入物理的元素,比如刚体(就是我们的小球),重力,摩擦力,弹力。
Scene*GameScene::createScene(){    //创建一个物理场景。    mScene = Scene::createWithPhysics();    mScene->getPhysicsWorld()->setGravity(Vec2(0, 0));    //debug模式,能更好的显示我们的刚体,大家删除这条代码也行。    mScene->getPhysicsWorld()->setDebugDrawMask(PhysicsWorld::DEBUGDRAW_ALL);    //创建该类,是一个layer。    auto gameSceneLayer = GameScene::create();    mScene->addChild(gameSceneLayer);    return mScene;}

接下来创建球和物理边界。

bool GameScene::init(){    //创建一个node,来载入我们即将创建的物理边界。    auto border = Node::create();    //把物理边界载入node当中。创建一个edgeBox相对于我们实例当中4周的墙壁,PhysicsMaterial(0.1, 1, 0))这个是这个物理边界的材料,第一个是质量设置为0.1,弹力为1,也就是完全弹力。摩擦力为0.还是很好理解。    border->setPhysicsBody(PhysicsBody::createEdgeBox(Size(        VISIBLESIZE.width, VISIBLESIZE.height), PhysicsMaterial(0.1, 1, 0)));    //将border设置为屏幕中心,刚好边界就是整个屏幕。    border->setPosition(VISIBLESIZE.width / 2, VISIBLESIZE.height / 2);    addChild(border);    //下面我们加入一个球体,在游戏设计中都称作刚体。    //创建一个精灵 ,是一个圆球。    auto sprite = Sprite::create("Pea.png");    //创建一个球型刚体。第一个参数是半径,第二个是无力材料。    auto body = PhysicsBody::createCircle(sprite->getContentSize().width/2, PhysicsMaterial(0.1, 1, 0));    //将精灵绑定这个球体,这个精灵相当于拥有了球的物理属性。    sprite->setPhysicsBody(body);    sprite->setPosition(position);    Vec2 velocity(360,720);    //设置精灵的初始速度。    sprite->getPhysicsBody()->setVelocity(velocity);    addChild(sprite);    return true;}

这样就OK了 ,就实现了上述事例。用起来还是非常方便的。注意不要把刚体的半径设置太小,否则会出来刚体穿透问题。刚体穿透大家可以百度,cocos3.7 在physicsTest 中也给出了解决方案。

0 0