collision filter what i doing wrong ?

capture.jpg

hi, here above it’s my worksheet of my collision filter. Always works exept the bonusCollisionFilter

my bonus pass through my floor i don’t know why?

here below my snippet :

local physics = require("physics") local myGroupBonus = display.newGroup() --COLLISION FILTER--------------------------------- local bonusCollisionFilter = { categoryBits=16, maskBits=7 } local floorCollisionFilter = { categoryBits=4, maskBits=3 } local enemyCollisionFilter = { categoryBits=2, maskBits=15 } local protectionCollisionFilter = { categoryBits=8, maskBits=2 } local playerCollisionFilter = { categoryBits=1, maskBits=14 } local function drawBonus()     local bonus = {}     for i=1, lvl[cnt.lvl].numberbonus do --lvl[cnt.lvl].numberbonus=2         bonus[i]=display.newImageRect( myGroupBonus,"square.png",12,12)         bonus[i].x,bonus[i].y=-500,-500         bonus[i].onlife =  true         bonus[i].rotation=0         bonus[i].anchorY=1         bonus[i].isVisible = false         bonus[i].timeInLife = 0         bonus[i].myid = 4         physics.addBody(bonus[i],{density=.21, friction=1, bounce=0.1,shape=pentagonShape,filter=bonusCollisionFilter})          end          local function appearsbonus()              cnt.square=cnt.square+1 --cnt.square=0 by default                  if cnt.square \> lvl[cnt.lvl].numberbonus then --lvl[cnt.lvl].numberbonus=2                      cnt.square=1                  end                  if bonus[cnt.square].isVisible == false then                      bonus[cnt.square].isVisible = true             transition.to(bonus[cnt.square],{time=1, x=mathRandom(80,display.contentWidth-80), y=position.bonus})             bonus[cnt.square].isVisible = true         end     end     timer.performWithDelay(mathRandom(1000,6000),appearsbonus,-1) end drawBonus()

thanks for your help.

 

Hi espace3d,

I always struggled with collision filters until someone on here posted a link to the Collisionator3000XL.
It’s really simple to use (though does require flash).

http://labs.zanuka.com/collisionator3000XL/index.html

Hope it helps.

thanks, problem solved here it’s the solution

playerCollisionFilter = { categoryBits = 1, maskBits = 22 }
enemyCollisionFilter = { categoryBits = 2, maskBits = 31 }
floorCollisionFilter = { categoryBits = 4, maskBits = 23 }
protectionCollisionFilter = { categoryBits = 8, maskBits = 2 }
bonusCollisionFilter = { categoryBits = 16, maskBits = 7 }

 

Or you could simply use my collision calculator and bypass the mess and confusion:

https://store.coronalabs.com/

i.e. Use names and simple rules instead of numbers.

I didn’t read your chart (thoroughly) and just guessed at what you wanted, but this is how simple using the collision calculator is (so simple it has made me almost forget how to do the calculations by hand):

local physics = require("physics") physics.start() local ccmgr = require "plugin.cc" local myCC = ccmgr.newCalculator() myCC:addNames( "player", "enemy", "floor", "protection", "bonus" ) myCC:collidesWith( "player", { "enemy", "floor", "bonus", "protection" } ) myCC:collidesWith( "enemy", { "floor" } ) local myPlayer = display.newRect( group, 0, 0, size, size) physics.addBody( myPlayer, "dynamic", { filter = myCC:getCollisionFilter( "player" ) } )

The calculator is smart and reciprocal.  

i.e. If you calculate object A to collide with B, B is automatically calculated to collide with A

The above example calculates:,

  • player collides with - enemy, floor, bonus, protection
  • enemy collides with - player, and floor 
  • floor with - player, enemy
  • bonus  with - player
  • protection with - player

hi roaminggamer,

I have tried your plugin, but i use corona sdk trough wine on linux and that don’t works with wine. On my mac your plugin works but i spend more time on linux…

@+

How does it not work?  Does it not download?  If so, download it directly here:

http://github.com/roaminggamer/RGCC

Hi espace3d,

I always struggled with collision filters until someone on here posted a link to the Collisionator3000XL.
It’s really simple to use (though does require flash).

http://labs.zanuka.com/collisionator3000XL/index.html

Hope it helps.

thanks, problem solved here it’s the solution

playerCollisionFilter = { categoryBits = 1, maskBits = 22 }
enemyCollisionFilter = { categoryBits = 2, maskBits = 31 }
floorCollisionFilter = { categoryBits = 4, maskBits = 23 }
protectionCollisionFilter = { categoryBits = 8, maskBits = 2 }
bonusCollisionFilter = { categoryBits = 16, maskBits = 7 }

 

Or you could simply use my collision calculator and bypass the mess and confusion:

https://store.coronalabs.com/

i.e. Use names and simple rules instead of numbers.

I didn’t read your chart (thoroughly) and just guessed at what you wanted, but this is how simple using the collision calculator is (so simple it has made me almost forget how to do the calculations by hand):

local physics = require("physics") physics.start() local ccmgr = require "plugin.cc" local myCC = ccmgr.newCalculator() myCC:addNames( "player", "enemy", "floor", "protection", "bonus" ) myCC:collidesWith( "player", { "enemy", "floor", "bonus", "protection" } ) myCC:collidesWith( "enemy", { "floor" } ) local myPlayer = display.newRect( group, 0, 0, size, size) physics.addBody( myPlayer, "dynamic", { filter = myCC:getCollisionFilter( "player" ) } )

The calculator is smart and reciprocal.  

i.e. If you calculate object A to collide with B, B is automatically calculated to collide with A

The above example calculates:,

  • player collides with - enemy, floor, bonus, protection
  • enemy collides with - player, and floor 
  • floor with - player, enemy
  • bonus  with - player
  • protection with - player

hi roaminggamer,

I have tried your plugin, but i use corona sdk trough wine on linux and that don’t works with wine. On my mac your plugin works but i spend more time on linux…

@+

How does it not work?  Does it not download?  If so, download it directly here:

http://github.com/roaminggamer/RGCC