Форум: "Игры";
Текущий архив: 2011.10.09;
Скачать: [xml.tar.bz2];
ВнизПуля Найти похожие ветки
← →
Mr.Vlad © (2007-09-13 23:07) [0]У меня вопрос. С помощью GLScene я начал делать стрелялку (только не подумайте, что я делаю её для продажи или как шедевер с новыми технологиями, нет я делаю её для себя и для друзей). Так как я не умею делать много чего (только 3 месяцев как стал сам разбираться) и анимационные модели, то использую стандартного waste.md2 только
рисую разные текстуры. Ну, ближе к вопросу. Мне надо сделать выстрел. Как я понимаю, создаю целиндр, при нажатии на LMB он visible:=true, GetOrCreateDCEDynamic(Pulia1).ApplyAccel(Sila). Это понятно, а вот как сделать чтобы пуля летела именно в том направлении в котором смотрит камера и ещё с разносом...??? Я пытался Position и Up пули присваивать камеры, но у меня что-то не получается. Подскажите, пожалуйста, или может есть какойто другой способ реализовать
выстрел и столкновение(расчёт что пуля попала в Actor3 и тд.).
← →
ElectriC © (2007-09-14 17:49) [1]Для полёты пуль - обычно юзаются вектора (вектору пули присваивается вектор камеры (положение, направление) + различные преобразования).
Для столкновения - Collusion Detection(вроде бы так пишется).
← →
Help me! © (2007-09-14 18:28) [2]// Начальное положение пули это положение камеры:
Pula_Position0 := Camera_Position;
// Так можно найти вектор направления движения пули:
glGetFloatv( GL_MODELVIEW_MATRIX , @m );
Pula_Direction.x := m[0,2];
Pula_Direction.y := m[1,2];
Pula_Direction.z := m[2,2]; // или все с минусом, что-то сейчас не соображу
Полженее пули в зависимости от времени такое:
Pula_Position.x := Pula_Position0.x + Pula_Direction.x * t * v;
Pula_Position.y := Pula_Position0.y + Pula_Direction.y * t * v;
Pula_Position.z := Pula_Position0.z + Pula_Direction.z * t * v;
// v - это скорость
Ну и т.д. ...
Положение камеры я например раньше находил вот так:
( способ проверенный работает )
function GetCameraPos: TVector3f;
var
mdP,mdM :array[0..15] of double;
mV :array[0..3 ] of integer;
x,y,z :double;
begin
glGetDoublev( GL_PROJECTION_MATRIX , @mdP );
glGetDoublev( GL_MODELVIEW_MATRIX , @mdM );
glGetIntegerv( GL_VIEWPORT , @mV );
gluUnProject( mV[2]/2 , mV[3]/2 , -1000000 , @mdM , @mdP , @mV , x , y , z );
result.x:=x;
result.y:=y;
result.z:=z;
end;
Страницы: 1 вся ветка
Форум: "Игры";
Текущий архив: 2011.10.09;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.003 c