即使我设置了groupIndex,物体仍然发生碰撞。

我有4个同样的物体,都是矿物,还有一个我不想与其他物体相撞的物体。我将这4个物体的“groupIndex”设为正数,而将另一个物体设为负数。对于其中的2个矿物,它有效,但对于其他2个,它相撞了。

以下是这些物体的代码:

mine=display.newImage("mine.png")
mine:setReferencePoint(display.BottomLeftReferencePoint)
mine.y=-200
mine.x=math.random(0,280)
physics.addBody(mine, "static", {density=0, bounce=0, friction=0, radius=12})
mine.isVisible=true
local mineCollisionFilter = { groupIndex = 2 }

mine2=display.newImage("mine.png")
mine2:setReferencePoint(display.BottomLeftReferencePoint)
mine2.y=-400
mine2.x=math.random(0,280)
physics.addBody(mine2, "static", {density=0, bounce=0, friction=0, radius=12})
mine2.isVisible=true
local mine2CollisionFilter = { groupIndex = 3 }

mine3=display.newImage("mine.png")
mine3:setReferencePoint(display.BottomLeftReferencePoint)
mine3.y=-50
mine3.x=math.random(0,280)
physics.addBody(mine3, "static", {density=0, bounce=0, friction=0,     radius=12})
mine3.isVisible=true
local mine3CollisionFilter = { groupIndex = 4 }

mine4=display.newImage("mine.png")
mine4:setReferencePoint(display.BottomLeftReferencePoint)
mine4.y=-400
mine4.x=math.random(0,280)
physics.addBody(mine4, "static", {density=0, bounce=0, friction=0,r adius=12})
mine4.isVisible=true
local mine4CollisionFilter = { groupIndex = 5 }

function  salvareF(event)
salvare=display.newImage("RedButton.png")
salvare.x=math.random(0,300)
salvare.y=0
salvare.height=30
salvare.width=30
physics.addBody( salvare, "dynamic", {density=0, bounce=0, friction=0, radius=12} )
salvare.gravityScale=0
salvare:setLinearVelocity( 0,350 )
salvare.isVisible=true
salvare.collision=evCollision
local salvareCollisionFilter = { groupIndex=-6 }
salvare:addEventListener("collision", salvare)

end
点赞