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

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

как в GLScene осуществить полет пули?


vivk ©   (2003-01-23 19:46:00) 

Сабж?
Интересует как узнать куда смотрит камера?
На какой угол она повернута, или тут другим способом это делается?


pifpaf   (2003-01-28 19:18:00) [1]

Да и отвязывать не обязательно. Пусть летит в координатах камеры.


pifpaf   (2003-01-28 19:18:00) [2]

Тормознул. :(


vivk   (2003-01-28 09:38:00) [3]

Аууу
SSS
Как это сделать, дай пример.


vivk   (2003-01-24 18:13:00) [4]

SSS
А как это сделать?
Пример плиз


SSS   (2003-01-24 17:44:00) [5]

Zachem tebe знать куда смотрит камера? Prosto privjazhi pulu k kamere i kogda budesh strelat", ovjazhi ee ot kameri i pust" ona postupatel"no po osi letit.


MRB_SPB   (2003-01-24 11:47:00) [6]

P.S. 1. Незабудь вернуть матрицу назад в модель виев
2. не считай это для каждой пули- для всех одинаково только полученые векторы FVn скалируй и перемещай
3. Для скорости эта гадась перещитывается только на поворот камеры


MRB_SPB   (2003-01-24 11:43:00) [7]

Куда глядит камера просто - от сердца отрываю :))

function getLook_Vector:TAffineVector;
var Lk_nap:TAffineVector;
matrix:array [0..3,0..3] of glfloat;
begin
glGetfloatv(GL_PROJECTION_MATRIX, @matrix);
Lk_nap[0]:=(matrix[0][3] + matrix[0][2]);
Lk_nap[1]:=(matrix[1][3] + matrix[1][2]);
Lk_nap[2]:=(matrix[2][3] + matrix[2][2]);
Result:= VectorNormalize(Lk_nap);
end;

Пуля если решишь сделать частицой или билбордом -

где FVn - координаты которые при маштабировании по размеру пули и перемещении в нужную её координату будут рисовать её всегда направленной к камере

FV1:=VectorCrossProduct(LookVector,ZVector);
FV1:=VectorNormalize(FV1);
FV2:=VectorCrossProduct(LookVector,FV1);
FV2:=VectorNormalize(FV2);
FV3:=VectorCrossProduct(LookVector,FV2);
FV3:=VectorNormalize(FV3);
FV4:=VectorCrossProduct(LookVector,FV3);
FV4:=VectorNormalize(FV4);


Наверх

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