AS3 Прогнозирование столкновений (тестирование с разверткой)

Я делаю базовый платформенный движок в AS3, и в настоящее время реализую гравитацию. Гравитация в настоящее время позволяет игроку погрузиться на несколько пикселей в землю, когда он приземляется (в зависимости от скорости игрока), а я этого не хочу.

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

Я также хочу, чтобы коллизии с точностью до пикселя принимали форму местности, поэтому я использовал комплект обнаружения столкновений Кори О'Нила (CDK), который очень хорошо работает для обнаружения столкновений, но я не могу понять, как это сделать. оно предсказывает их. Я не уверен, что это лучшая библиотека для использования.

Я не уверен насчет Box2D; Я чувствую, что это слишком много для того, что я хочу.

Любая идея о том, как я могу выполнять тесты развертки с идеальным пикселем в AS3?


person Ashley    schedule 03.10.2012    source источник


Ответы (2)


Box2D должен быть довольно хорош и для небольших проектов, в том числе в случае, если вы захотите увеличить масштаб позже...

Если вам нужно быстро разобраться, посмотрите Quick Box 2d.

Есть несколько хороших руководств (здесь и здесь).

person loxxy    schedule 03.10.2012

Я хочу иметь возможность тестировать столкновения на 1 кадр раньше времени (проверка развертки), и если столкновение произойдет в следующем кадре, я хочу, чтобы игрок останавливался на 0 пикселей в землю, независимо от скорости игрока.< / суп>

В своем игровом цикле, где вы проверяете столкновения, просто добавьте движение, которое будет выполнено в следующем кадре, текущую скорость Y. Что-то вроде этого:

if(currentYSpeed + player.y >= ground.y)
{
    player.y = ground.y
}else
{
    player.y += currentYSpeed;
} 
person Marcelo Assis    schedule 03.10.2012
comment
Это основная идея тестирования подметания, но оно не будет повторять форму земли. - person Ashley; 04.10.2012