碰撞事件和display.newGroup如何连接在一起? Corona

我有一个问题。根据下面的代码,我创建了一个对象x次(在这种情况下是20次),并将其添加到一个ballGroup中。此外,每个对象都应该具有body属性,并对“collision”物理事件做出反应。但是,所有创建的球都没有分配body属性(将它们放入ballGroup后)。所以我认为有一个问题(当我将球插入ballGroup时)。当我尝试将Body添加到整个ballGroup时(带有注释的行),只有最后一个球有Body属性。有什么想法如何解决这个问题吗?

ballGroup = display.newGroup();
ballGroup.collision = onCollision;
ballGroup:addEventListener("collision", ballGroup);
-- physics.addBody(ballGroup,"dynamic", {density = 1, friction = 0, bounce = 1, radius = 10});

for i = 1,20 do
    spawnBall();
end

function spawnBall()
    ball = display.newImage("image.png");
    ball.x = math.random(-W/2, W/2);
    ball.y = math.random(-H/2, H/2);
    physics.addBody(ball,"dynamic", {density = 1, friction = 0, bounce = 1, radius = 10});
    ballGroup:insert(ball);
end

function onCollision(event)
    print("123");
end
点赞
用户1682268
用户1682268

每次调用spawnball()时,将你的球local化

 ballGroup = display.newGroup();
    ballGroup.collision = onCollision;
    ballGroup:addEventListener("collision", ballGroup);
    -- physics.addBody(ballGroup,"dynamic", {density = 1, friction = 0, bounce = 1, radius = 10});

    for i = 1,20 do
        spawnBall();
    end

    function spawnBall()
        local ball = display.newImage("image.png");
        ball.x = math.random(-W/2, W/2);
        ball.y = math.random(-H/2, H/2);
        physics.addBody(ball,"dynamic", {density = 1, friction = 0, bounce = 1, radius = 10});
        ballGroup:insert(ball);
        ball.collision = onCollision
        ball:addEventListener( "collision", ball )

    end

    function onCollision(event)
        print("123");
    end
2013-05-22 04:06:26