0

私は問題があります。以下のコードに従って、オブジェクトを x 回 (この場合は 20 回) 作成し、ballGroup に追加します。さらに、すべてのオブジェクトにはボディがあり、「衝突」物理イベントに反応する必要があります。しかし、作成されたすべてのボールに body プロパティが割り当てられていません (それらを ballGroup に入れた後)。したがって、問題があると思います(ボールをballGroupに挿入するとき)。ballGroup 全体 (コメントのある行) に Body を追加しようとすると、最後のボールだけが 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
4

1 に答える 1

1

spawnball() を呼び出すたびにボールをローカルにします

 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-22T04:06:26.840 に答える