.lua
local winSize = cc.Director:getInstance():getWinSize()
local PTM_RATIO = 32.0
local gravity = b2Vec2(0.0, -10.0)
self._world = b2World:new_local(gravity)
**self._world:SetContactListener(nil)** ????
local groundBodyDef = b2BodyDef:new_local()
groundBodyDef.position = b2Vec2(0, 0)
local groundBody = self._world:CreateBody(groundBodyDef)
local groundEdge = b2EdgeShape:new_local()
local boxShapeDef = b2FixtureDef:new_local()
boxShapeDef.shape = groundEdge
groundEdge:Set(b2Vec2(0,0), b2Vec2(winSize.width/PTM_RATIO, 0))
groundBody:CreateFixture(boxShapeDef)
groundEdge:Set(b2Vec2(0,0), b2Vec2(0, winSize.height/PTM_RATIO))
groundBody:CreateFixture(boxShapeDef)
groundEdge:Set(b2Vec2(0, winSize.height/PTM_RATIO), b2Vec2(winSize.width/PTM_RATIO, winSize.height/PTM_RATIO))
groundBody:CreateFixture(boxShapeDef)
groundEdge:Set(b2Vec2(winSize.width/PTM_RATIO, winSize.height/PTM_RATIO), b2Vec2(winSize.width/PTM_RATIO, 0))
groundBody:CreateFixture(boxShapeDef)
local bodySprite = cc.Sprite:create("HelloWorld.png")
:addTo(self)
-- Create body and shape
local bodyDef = b2BodyDef:new_local()
bodyDef.type = b2_dynamicBody
bodyDef.position:Set(300 / PTM_RATIO, 500 / PTM_RATIO)
local _body = self._world:CreateBody(bodyDef)
local shape = b2PolygonShape:new_local()
shape:SetAsBox(195 / 2 / PTM_RATIO, 270 / 2 / PTM_RATIO);
local fixtureDef = b2FixtureDef:new_local()
fixtureDef.shape = shape
_body:CreateFixture(fixtureDef)
_body.userData = bodySprite
self.body_list = {}
table.insert(self.body_list, _body)
local function tick(dt)
self._world:Step(dt, 8, 3)
if self.body_list ~= nil then
for i, body in ipairs(self.body_list) do
local sprite = body.userData
sprite:setPosition(cc.p(body:GetPosition().x * PTM_RATIO, body:GetPosition().y * PTM_RATIO))
sprite:setRotation(-1 * 57.29577951*(body:GetAngle()))
end
end
end
cc.Director:getInstance():getScheduler():scheduleScriptFunc(tick, 1 / 60, false)