Я делаю простую флеш-игру и пытаюсь удержать аватара от удара по стенам на заданном уровне, вот код, который я написал, достаточно простой
var hitWall:Boolean = checkWallHitlvl1();
if ( downKeyIsBeingPressed )
{
avatar.moveABit( 0, 1 );
if(hitWall)
{
avatar.moveABit( 0, -5);
}
}
else if ( upKeyIsBeingPressed )
{
avatar.moveABit( 0, -1 );
if(hitWall)
{
avatar.moveABit( 0, 5 );
}
}
else if ( leftKeyIsBeingPressed )
{
avatar.moveABit( -1, 0 );
if(hitWall)
{
avatar.moveABit( 5, 0 );
}
}
else if ( rightKeyIsBeingPressed )
{
avatar.moveABit( 1, 0 );
if(hitWall)
{
avatar.moveABit( -5, 0 );
}
}
hitWall проверяет, попадает ли аватар на стены уровня, проблема с этим кодом заключается в том, что даже если, скажем, я ударил стену справа и пытаюсь двигаться влево, я не могу, поскольку hitWall не проверяет откуда Стена повреждена, мой вопрос: есть ли способ сделать эту работу без необходимости выяснять, в каком направлении игрок ударяет по данной стене, я пытался автоматически перемещать аватар влево, если он ударяет по нему справа, но это не совсем хорошо получилось ...
какие-либо предложения, пожалуйста?
thanx = D
EDIT1: я отредактировал код, теперь он работает, но выглядит довольно резко, так как мне нужно сделать шаг назад на 5 пикселей, я, к сожалению, не могу сделать шаг назад на 1 пиксель, поскольку hitTestObject во флэш-памяти по-прежнему возвращает true ( checkWallHitLvl1 () в основном использует hitTestObject, чтобы проверить, попал ли игрок в стену), какие-либо предложения?
EDIT2: Я нашел способ исправить это, просто нужно запустить еще несколько тестов и убедиться, что все работает нормально, если они все пройдут, я опубликую код, в основном я просто использовал 4 логических значения переменные, чтобы проверить, в каком направлении я ударил стену и пошел оттуда ... = D