您的位置:首页 > 移动开发 > Cocos引擎

[cocos2dx]cocos2dx3.x+lua中使用物理引擎

2015-01-23 10:36 531 查看
cocos2dx3.x中使用物理引擎还是挺方便的

世界杯期间做个接地气的

平时创建场景

Lua

1local scene = cc.Scene:create()
改成Lua

1

local
scene
=
cc.Scene:createWithPhysics()

这样的场景就是带物理世界的场景了

设置重力

Lua

1scene:getPhysicsWorld():setGravity(cc.vertex2F(0,-1000))
声明层Lua

1

local
layer
=
cc.LayerColor:create(cc.c4f(255,255,255,255))

声明一个函数,作用是点一下屏幕在当前位置丢下一个足球

Lua

12345678910local 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
声明一个触摸监听器,并和层绑定

1

2

3

local
listener
=
cc.EventListenerTouchOneByOne:create()

listener:registerScriptHandler(onTouch,cc.Handler.EVENT_TOUCH_BEGAN)

layer:getEventDispatcher():addEventListenerWithSceneGraphPriority(listener,layer)

创建物理世界边界

Lua

1234local edge = cc.Node:create()edge:setPhysicsBody(cc.PhysicsBody:createEdgeBox(visibleSize))edge:setPosition(visibleSize.width/2,visibleSize.height/2)layer:addChild(edge)
层添加到场景里Lua

1

scene:addChild(layer)

这样就算完成了,点一下出现一个足球还会和其他足球碰撞
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: