
11.06.2006, 02:24
|
|
|
FD Team
блогер
Регистрация: Dec 2005
Сообщений: 365
|
Перескакивание препятствия при эмуляции движения
Возникла у меня такая задача.
Есть некая игра, допустим бильярд, в котором есть биток и остальные шары. Мы бьем биток, он бьет остальные шары, они катаются по столу, отскакивают. Тут проблем нет. Все реализовано на векторах.
Проблема начинается при сильном удабе битка (вектор скорости > радиуса шарика в 2 и более раз). Получается как бы "перелетание" шара битком. Например бьем биток, сообщая ему скорость в 50 пикселей (что означает, что в следущем кадре биток переместится на 50 пикселей). Но если на пути находился какой либо шар (радиуом в 10 пикселей), то биток его просто напросто перескочит.
Решения, как я вижу, два: 1. ограничить скорость шаров до скорости радиуса (не вариант, слишком медленно), 2. в случае слишком длиного вектора, разбивать его на части (в нашем случае можно разбить вектор длиной 50 пикселей на 5 векторов) и проверять на наличие препятствия в каждом из них. -- тоже не вариант, так как очень брольшие тормоза.
Хотелось бы услышать, какие еще есть варианты? А они, по идее должны быть, так как я видел бильярды где скорость шров достаточно велика и нет перескакивания.
Спасибо
|