![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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 строке