Показать сообщение отдельно
Старый 11.06.2006, 02:24
ir73 вне форума Посмотреть профиль Отправить личное сообщение для ir73 Найти все сообщения от ir73
  № 1  
Ответить с цитированием
ir73
FD Team

блогер
Регистрация: Dec 2005
Сообщений: 365
Записей в блоге: 6
По умолчанию Перескакивание препятствия при эмуляции движения

Возникла у меня такая задача.
Есть некая игра, допустим бильярд, в котором есть биток и остальные шары. Мы бьем биток, он бьет остальные шары, они катаются по столу, отскакивают. Тут проблем нет. Все реализовано на векторах.

Проблема начинается при сильном удабе битка (вектор скорости > радиуса шарика в 2 и более раз). Получается как бы "перелетание" шара битком. Например бьем биток, сообщая ему скорость в 50 пикселей (что означает, что в следущем кадре биток переместится на 50 пикселей). Но если на пути находился какой либо шар (радиуом в 10 пикселей), то биток его просто напросто перескочит.

Решения, как я вижу, два: 1. ограничить скорость шаров до скорости радиуса (не вариант, слишком медленно), 2. в случае слишком длиного вектора, разбивать его на части (в нашем случае можно разбить вектор длиной 50 пикселей на 5 векторов) и проверять на наличие препятствия в каждом из них. -- тоже не вариант, так как очень брольшие тормоза.

Хотелось бы услышать, какие еще есть варианты? А они, по идее должны быть, так как я видел бильярды где скорость шров достаточно велика и нет перескакивания.

Спасибо