void UnlockPortals::SetLockCollision(cocos2d::Vec2 collBoxSize, cocos2d::Vec2 collBoxOffset) { m_lockCollision = cocos2d::PhysicsBody::createBox(cocos2d::Size(collBoxSize), cocos2d::PhysicsMaterial(1.0f, 0.0f, 0.0f), collBoxOffset); m_lockCollision->setContactTestBitmask(0x0); m_lockCollision->setCollisionBitmask(0x1 << curOffset); m_lockCollision->setDynamic(false); m_lockCollision->setGravityEnable(true); m_lockCollision->setRotationEnable(false); m_lockCollision->retain(); if (curOffset < 30) ++curOffset; else curOffset = 27; if (!IsUnlocked()) { setPhysicsBody(m_lockCollision); removeAllChildrenWithCleanup(true); if (!collBoxSize.isZero() && m_boundaryImg != "none") { removeAllChildrenWithCleanup(true); auto boundary = cocos2d::Sprite::create(); boundary->setAnchorPoint(cocos2d::Vec2(0, 0)); boundary->setTexture(m_boundaryImg); boundary->setTextureRect(cocos2d::Rect(collBoxOffset.x - collBoxSize.x / 2, collBoxOffset.y - collBoxSize.y / 3, collBoxSize.x, collBoxSize.y)); cocos2d::Texture2D::TexParams params = cocos2d::Texture2D::TexParams(); params.magFilter = GL_LINEAR; params.minFilter = GL_LINEAR; params.wrapS = GL_REPEAT; params.wrapT = GL_REPEAT; boundary->getTexture()->setTexParameters(params); boundary->setCameraMask(4); addChild(boundary,22); boundary->setPosition(cocos2d::Vec2(collBoxOffset.x - collBoxSize.x / 3.0, collBoxOffset.y - collBoxSize.y / 3.0) + cocos2d::Vec2(m_imgXOffset, m_imgYOffset)); } } }