1

Я делаю платформер. Вот что я до сих пор: http://megaswf.com/s/2486396 (перемещение и прыжок со стрелками).AS3 - Поиск наивысшей координаты y для заданной x-координаты в BitmapData?

Я использую данные растрового изображения земли для проверки столкновений с координатами игрока, и игрок погружается в землю на несколько пикселей (особенно при ходьбе в гору). Чтобы этого избежать, я хочу, чтобы координата y игрока мгновенно изменилась, чтобы игрок сидел на земле. Вот то, что я работаю над:

if (groundClipBmpData.hitTest(rLoc, 255, bLocFuture)) { 
     playerClip.y = ??? 
    } 

Я хочу игрок у-координату для изменения, чтобы стать самым высоким пикселем groundClipBmpData в точке х игрока координат.

Как я могу это сделать?

ответ

0

Как я уже говорил в другом вопросе:

Использования while вместо if

Как это:

while(groundClipBmpData.hitTest(rLoc, 255, playerClipBmpData, bLocFuture, 255)) 
{ 
     playerClip.y--; 
} 
playerClip.y++; 

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

+0

Спасибо :) Это работает. Я не уверен, что это самое быстрое решение. – Ashley

+0

, вероятно, нет, вы бы хотели быстрее? Я бы не стал беспокоиться об этом, если вы не обнаружите, что это «узкое место» в вашей игре. Вы можете проверить, сколько времени потребуется компьютеру, используя getTimer() до и после цикла и вычитая: after-before: это даст вам миллисекунды, которые он принимает, я подозреваю, что это будет 0. – zehelvion