Предотвращение застревания объекта на стенах и быстрого подпрыгивания между двумя точками - PullRequest
0 голосов
/ 03 апреля 2012

У меня есть объекты, которые заполняют экран случайным образом и подпрыгивают на сцене.Проблема в том, что некоторые объекты застревают и быстро подпрыгивают вперед и назад между двумя точками.Как я могу предотвратить это?

Вот как у меня есть настройка EnterFrame:

var ballT = e.target
ballT.x +=  ballT.vx;
ballT.y +=  ballT.vy;

if (ballT.x + ballT.width / 2 >= sWidth || ballT.x - ballT.width / 2 <= 0) {
    ballT.vx =  -  ballT.vx;
} else if (ballT.y + ballT.height / 2 >= sHeight || ballT.y - ballT.height / 2 <= 0) {
    ballT.vy =  -  ballT.vy;
}

Любые идеи или любые хорошие чтения стоит проверить?

1 Ответ

3 голосов
/ 03 апреля 2012

Скорее всего, ваши объекты немного «выходят за пределы», поэтому, когда вы поворачиваете их, они не выходят за пределы, прежде чем вы снова их развернете. Возможно, вы захотите изменить код, чтобы он был более понятным, когда все должно измениться;

var ballT = e.target
ballT.x +=  ballT.vx;
ballT.y +=  ballT.vy;

// Outside to the right and heading right - turn around
if ( ballT.x + ballT.width / 2 >= sWidth && ballT.vx > 0 )
    ballT.vx = -ballT.vx;

// Outside to the left and heading left - turn around
if ( ballT.x - ballT.width / 2 <= 0 && ballT.vx < 0 )
    ballT.vx = -ballT.vx;

// Outside at the bottom and heading down - turn around
if ( ballT.y + ballT.height / 2 >= sHeight && ballT.vy > 0 )
    ballT.vy = -ballT.vy;

// Outside at the top and heading up - turn around
if ( ballT.y - ballT.height / 2 <= 0 && ballT.vy < 0 )
    ballT.vy = -ballT.vy;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...