Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Игры";
Текущий архив: 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
1-1269069357
GA001
2010-03-20 10:15
2011.10.09
Сообщения форме


15-1308061241
boriskb
2011-06-14 18:20
2011.10.09
Признавайтесь, кто с ребенком переписывался?


4-1251278625
NeonSimfi
2009-08-26 13:23
2011.10.09
Проблема с получением comctl32.dll на Win Vista/7 ...


15-1307623782
oxffff
2011-06-09 16:49
2011.10.09
YAR под windows


1-1263893750
midikey
2010-01-19 12:35
2011.10.09
Подобие написания/выполнения скрипта





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский