затылок удалить тело при столкновении

У меня есть функция, которая определяет, когда объекты сталкиваются, но как мне удалить один из них?

private function fruitToFloorCollision(collision:InteractionCallback):void
        {
            // TODO Auto Generated method stub

            trace('fruit hits floor');

        }

когда я прослеживаю столкновение

Cb:BEGIN:(dynamic)#11/(static)#1 : [CollisionArbiter(Polygon#2|Circle#12)[SD]<-ACCEPT] : listener: InteractionListener{BEGIN#COLLISION::@{[CbType#5] excluding []}:@{[CbType#6] excluding []}} precedence=0

person LeBlaireau    schedule 01.05.2013    source источник


Ответы (3)


Предпочтительная идиома с Nape для удаления тела из симуляции выглядит так:

ball.space = null;

Хотя он внутренне вызывает space.bodies.remove() так же, как и вы, он также выполняет некоторые дополнительные проверки.

person reanimated    schedule 02.02.2014

my answer.....

если у кого-то есть лучший/альтернативный вариант, хотелось бы услышать...

private function fruitToFloorCollision(collision:InteractionCallback):void
        {


            var ball:Body = collision.int1 as Body;
            removeChild(ball.userData.graphic);
            space.bodies.remove(ball);
        }
person LeBlaireau    schedule 01.05.2013

Насколько я знаю, учитывая, что у вас есть 2 объекта: фрукты и пол, InteractionListener добавляется именно в таком порядке.

private function fruitToFloorCollision(collision:InteractionCallback):void
    {

        // CBTypes are added to Shapes not Bodies. So collision.int1 is a shape.

        var fruit:Body = collision.int1.castShape.body as Body;
        removeChild(fruit.userData.graphic);
        space.bodies.remove(fruit);
    }
person Monster Brain    schedule 02.06.2014