作者:a君bb_307 | 来源:互联网 | 2023-09-10 16:05
在公司现在开发使用的是cocos2d-x3.2版本,用cocos code ide开发工具使用的是lua,所以闲下来想研究下自己没有接触过的物理引擎,相关的测试都是在上面的条件进行的。 cocos2d-x 3.x将物理引擎进行了封装,我们只需要调用其API就可以了,在使用物理引擎的时候我们需要告诉scene我们正在物理引擎的条件下进行开发所以需要在原有的
local GameScene = class( "GameScene",function ()return cc.Scene:create()
end)
进行修改为
local GameScene = class( "GameScene",function ()return cc.Scene:createWithPhysics()
end)
这样就有了基础的条件允许我们进行物理引擎的开发了。
我们现在可以给我们物理的世界一个边框,限制其边缘范围。
local edgeBody = cc.PhysicsBody:createEdgeBox( scene.visibleSize, cc.PhysicsMaterial( 1,1 ,0), 3)
使用PhysicsBody:createEdgeBox就是创建了矩形边框,第一个参数就是这个边框的size大小,第二个是相关这个刚体的属性(密度、碰撞系数、摩擦力),第三个参数是边缘像素
然后我们创建一个node
local edgeNode = cc.Node:create()
scene:addChild( edgeNode)
edgeNode:setPosition( scene.visibleSize.width * 0.5 , scene.visibleSize.height * 0.5 )
edgeNode:setPhysicsBody( edgeBody)
我们将我们已经创建好的body给设置到node上后就拥有了我们的世界边缘了。我们就可以让我们再创建的东西不超出范围了。但是运行不知道我们的边缘范围,我们需要设置显示
scene :getPhysicsWorld():setDebugDrawMask(cc.PhysicsWorld.DEBUGDRAW_ALL)
这样相当于我们测试模式下可以看到我们设置相关刚体的范围的,不仅仅有DEBUGDRAW_ALL还有其他参数,我暂时也不知道是与哪些相关的,但是DEBUGDRAW_NONE很清楚就是设置都不现实。此时运行起来我们可以看到世界的边缘范围。
end
上面是整合在一起的源码,明天继续学习。