cocos3.7物理引擎基本使用

我们将完成一个简单的实例来介绍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 中也给出了解决方案。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值