MainScene.lua
local MainScene = class("MainScene", cc.load("mvc").ViewBase)
local FootBallGame = import(".FootBallGame")
function MainScene:onCreate()
-- add playbutton
local playButton = cc.MenuItemImage:create("button_play.png", "button_playclicked.png")
:onClicked(function()
--local scene = self:getApp():getSceneByName("PlayScene")
local scene = FootBallGame:create()
local transition = cc.TransitionSlideInR:create(0.5, scene)
cc.Director:getInstance():replaceScene(transition)
end)
cc.Menu:create(playButton)
:move(cc.p(display.cx, display.cy - 100))
:addTo(self)
end
return MainScene
FootBallGame.lua
--创建普通Scene
--local FootBallGame = class("FootBallGame", function()
-- return cc.Scene:create()
--end)
--local FootBallGame = class("FootBallGame", cc.Scene)
--创建带物理世界的Scene
local FootBallGame = class("FootBallGame", function()
return cc.Scene:createWithPhysics()
end)
function FootBallGame:ctor()
-- add background image
display.newSprite("bg_dayLong.png")
:move(display.center)
:addTo(self)
--设置重力
self:getPhysicsWorld():setGravity(cc.vertex2F(0,-980))
--创建物理世界边界
local edge = cc.Node:create()
--创建一个不受重力影响的矩形边界并绑定到Node结点上
edge:setPhysicsBody(cc.PhysicsBody:createEdgeBox(cc.Director:getInstance():getVisibleSize()))
edge:setPosition(display.center)
self:addChild(edge)
--注册鼠标监听事件,点击触发onTouch函数
local listener = cc.EventListenerTouchOneByOne:create()
listener:registerScriptHandler(function(touch, event)
self:onTouch(touch, event)
end,cc.Handler.EVENT_TOUCH_BEGAN)
self:getEventDispatcher():addEventListenerWithSceneGraphPriority(listener, self)
self._touchListener = listener
end
--定义callback函数
function FootBallGame: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)
--创建一个圆形刚体绑定到Sprite上
football:setPhysicsBody(cc.PhysicsBody:createCircle(size.width/2))
--给刚体设置初速度
football:getPhysicsBody():setVelocity(cc.vertex2F(0,300))
self:addChild(football)
return true
end
return FootBallGame
效果:点击屏幕则在点击处生成一个具有向上初速度的足球,足球在重力下自由下落,最终停在边界上。不同的小球之间、小球与边界之间都会产生碰撞。