Столкновение ActionsScript 3

Лягушка

Я разрабатываю флеш-игру под названием Frog, на данный момент мой код для столкновения между моей лягушкой и мухой не работает должным образом. Я бы хотел, чтобы он работал примерно так же, как метод, указанный ниже (последний пример).

Методы обнаружения столкновений, hitTest и hitTestObject альтернативы

Любая помощь будет оценена по достоинству.

function hitTargetFunction():void {
    for (i = 0; i < insectsMC.length; i++) {
        for (j = 0; j < insectsMC[i].length; j++) {
            if (frogMC.hitTestObject(insectsMC[i][j])) {
                trace('Target: ' + insectsMC[i][j].name);
                score +=  1;
                trace('Score: '+score);
                insectsMC[i][j].x = 0 - insectsMC[i][j].width * 2;
            }
        }
    }
}

person Kristian Matthews    schedule 27.04.2012    source источник
comment
@SamDeHaan По сути, этот код добавляет «ограничивающий прямоугольник» вокруг объекта, который представляет собой квадрат, однако я не хочу, чтобы «пустые» части моего клипа считались столкновением.   -  person Kristian Matthews    schedule 27.04.2012
comment
Если нет никакого способа обойти это, я думаю, что создам небольшой фрагмент ролика внутри видеоклипа, просто надену его на конец языка лягушки и буду использовать его вместо всей лягушки.   -  person Kristian Matthews    schedule 27.04.2012


Ответы (3)


Создание мувиклипа/спрайта внутри мувиклипа лягушки, вероятно, будет лучшим решением для вас в этой ситуации. PixelPerfectCollision очень удобен и полезен (однако в больших играх дорого), но тогда столкновение будет с любой частью лягушки. Конечно, вы можете разбить свой мувиклип с лягушкой и просто сделать PixelPerfectCollision только на языке. Но если это для курсовой работы, я бы просто выполнял hitTest() для какого-либо объекта отображения внутри лягушки.

person Shawn Freeman    schedule 08.05.2012

Могу ли я предложить попробовать фантастический набор для обнаружения столкновений?

Я уверен, что он сделает все, что вам нужно, и даже больше. Это также AS3, на котором написан ваш пример кода, поэтому я надеюсь, что вы найдете его полезным.

person Neil    schedule 27.04.2012
comment
Я приму это как ответ, так как это лучшее решение, хотя я делаю это для курсовой работы и, к сожалению, не могу использовать этот код. - person Kristian Matthews; 27.04.2012

Если вам не разрешено использовать стороннюю библиотеку для своей курсовой работы, вам следует ознакомиться с этим прекрасным учебным пособием на обнаружение коллизий на уровне пикселей с помощью ActionScript 3.0.

Общая идея заключается в том, что вы создаете копии BitmapData вашей векторной графики и используете метод hitTest этого класса для проверки столкновения на уровне пикселей.

person net.uk.sweet    schedule 27.04.2012