Показать сообщение отдельно
Старый 16.02.2009, 13:01   #7
H@NON
Дэвелопер
 
Регистрация: 17.01.2007
Сообщений: 1,552
Написано 351 полезных сообщений
(для 774 пользователей)
Ответ: Столкновение

В блитце коллизия работает вот как: Проверяется не только коллизия со сферой и полигоном, а еще и луч с полигоном, то есть если у нас сфера будет неподвижна внутри полигональной модели, с которой мы проверяем столконвение, то ничего не провериться. нужно обязательно, чтобы луч пересек полигон (ну или куб/сфера). Что это за луч? это луч от начала, до конца перемещения сферы. При установке EntityType объекту куда-то в блитц записываются координаты объекта. Это будет начало луча, а конец собстно проследнее положение сферы перед вызовом UpdateWorld(). Так вот, чтобы сделать проверку с движущимся полигональным объектом, нужно сделать такую конструкцию:
translateEntity platform, mx, my, mz
Entitytype player, 0
curX = EntityX(player,1)
curY = EntityY(player,1)
curZ = EntityZ(player,1)
PositionEntity player, curX+mx, curY+my, curZ+mz
Entitytype player, playerCol
PositionEntity player, curX, curY, curZ

При условии, что изначально player и platform не коллизионируют (не перекрывают) друг друга. Давно как-то приходилось разбираться с этим. Вот здесь тред был http://forum.likosoft.ru/showthread.php?t=259
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
HolyDel (16.02.2009)