cocos2dx3.x中使用物理引擎还是挺方便的
世界杯期间做个接地气的
平时创建场景
|
local scene = cc.Scene:create() |
改成
|
local scene = cc.Scene:createWithPhysics() |
这样的场景就是带物理世界的场景了
设置重力
|
scene:getPhysicsWorld():setGravity(cc.vertex2F(0,-1000)) |
声明层
|
local layer = cc.LayerColor:create(cc.c4f(255,255,255,255)) |
声明一个函数,作用是点一下屏幕在当前位置丢下一个足球
|
local function onTouch(touch,event) local location = touch:getLocation() local x,y = location.x,location.y local football = cc.Sprite:create("football.png") local size = football:getContentSize() football:setPosition(x,y) football:setPhysicsBody(cc.PhysicsBody:createCircle(size.width/2)) football:getPhysicsBody():setVelocity(cc.vertex2F(0,300)) layer:addChild(football) end |
声明一个触摸监听器,并和层绑定
|
local listener = cc.EventListenerTouchOneByOne:create() listener:registerScriptHandler(onTouch,cc.Handler.EVENT_TOUCH_BEGAN) layer:getEventDispatcher():addEventListenerWithSceneGraphPriority(listener,layer) |
创建物理世界边界
|
local edge = cc.Node:create() edge:setPhysicsBody(cc.PhysicsBody:createEdgeBox(visibleSize)) edge:setPosition(visibleSize.width/2,visibleSize.height/2) layer:addChild(edge) |
层添加到场景里
这样就算完成了,点一下出现一个足球还会和其他足球碰撞