уменьшить площадь для hittestobject - flash cs5 - PullRequest
0 голосов
/ 27 августа 2011

Я делаю простую игру со змеями в as3. проблема, с которой я сталкиваюсь, заключается в том, что штрихи на элементах слегка перекрывают друг друга, поэтому, когда змея проходит мимо яблока в соседнем квадрате, это вызывает попадание на объект испытания. Если я уменьшу размер или ход змеи или яблока, они не будут правильно выстроены в линию. Есть ли способ, которым я могу использовать hittestobject, но уменьшить площадь объекта, который будет вызывать его. т.е. срабатывает только если он попадает в центр объекта?

//this will hit when snake is adjacent due to overlapping strokes
if(snake.hitTestPoint(apple.x,apple.y,true))
{
    trace('hit');
}

//this doesnt work for some reason
if(snake.hitTestPoint(apple.x+2,apple.y+2,true))
{
    trace('hit');
}

когда я проследил значения для нижнего кода, значения были бы такими, как ожидалось, но по какой-то причине hitTestPoint не сработал. странно, если я сделаю +1, это все равно будет работать, но поскольку ход равен 2, мне нужно как минимум +3. Если я установлю apple.x + n в качестве переменной и использую переменную в hitTestPoint, это не сработает. также во всех случаях, когда это не срабатывает, я не получаю ошибок, и все значения трассировки - это то, что вы подозреваете ...

1 Ответ

1 голос
/ 28 августа 2011

В мувиклипе со змеей добавьте еще один клип, который функционирует в качестве его центра, а затем проверьте центральный клип вместо всего клипа со змеей.

если (snake.center.hitTestPoint (apple.x, apple.y, правда)) { след ( 'хит'); }

Полагаю, это самый простой способ решить вашу проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...