Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Collision Detection [VC]


VolanD666 ©   (2006-02-05 18:33:00) 

Здрасти, пиплы! Вот у меня проблема с Collision Detection. В общем, столкновение определяется правильно, но вот только при скольжении вдоль стены, стена начинает моргать. В чем дело?


XProger   (2006-02-05 20:46:00) [1]

VolanD666, масштабы...


VolanD666   (2006-02-05 19:54:00) [2]

Понятно.
Как так ! В XSource R=0.5, а у меня при <5 проскакивает сквозь треугольник!
Это из-за скорости?


XProger   (2006-02-05 19:38:00) [3]

VolanD666, проецируешь вектор Offset на плоскость пересечения, уменьшаешь его длинну на несколько порядков и вычитаешь из Offset.


VolanD666   (2006-02-05 19:27:00) [4]

Ага, нашел косяк !
Просто смещение прибавлял к "старому положению", а не к " куды хотим наступить ".
А вот интересно за счет чего можно регулировать скорость скольжения?


XProger   (2006-02-05 19:14:00) [5]

VolanD666, вообще "мерцание" в рендере должно возникать...
Но судя по коду и в расчётах может выявиться - удали весь else блок :)


VolanD666   (2006-02-05 19:10:00) [6]

:)

Вот код который определяет смещение:

D3DXVECTOR3 GetCollisionOffset( D3DXVECTOR3 Normal, D3DXVECTOR3  Pos, float R, float Dis ){
D3DXVECTOR3 Offset = D3DXVECTOR3( 0, 0, 0 );
 
if ( Dis > 0){
 Offset.x=Normal.x*( R-Dis );
 Offset.y=Normal.y*( R-Dis );
 Offset.z=Normal.z*( R-Dis );

}else{
 Offset.x=Normal.x*( -R-Dis );
 Offset.y=Normal.y*( -R-Dis );
 Offset.z=Normal.z*( -R-Dis );
}    

return ( Offset );
}


XProger   (2006-02-05 18:42:00) [7]

VolanD666, ошибка в 17 строке


Наверх

Титульная страница Поиск, карта сайта Написать письмо