![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Направление движения при повороте [Delphi, Windows]
akaValerius © (2007-01-08 00:51:00)Hi. У меня такая проблема, вобщем я кодю 3D игру типа HL и при повороте, персонаж продолжает идти по оси Z не учитывая то, что смотрит в другую сторону. Помогите сделать поворот мышкой и движение в направлении взгляда. Используются glRotated и glTranslatef.
OpenGL. Уже 3 суток парюсь.
antonn (2007-01-10 22:18:00) [1]@!!ex © (10.01.07 20:12) [22]
Я имел ввиду, в плане знаний OpenGL.
я тоже имел именно это в [5], а оффтоп пошел от [9] :)
@!!ex (2007-01-10 20:12:00) [2]
> antonn © (09.01.07 17:38) [17]
> @!!ex © (09.01.07 15:49) [16]
> Для написания полностью нормальной игры достаточно знать
> как нарисовать треугольник и все
> Бу-га-га:)))))
Я имел ввиду, в плане знаний OpenGL.
> ors_archangel © (09.01.07 23:56) [19]
Да. Со скоростью проблемы конкретные.
В планах - перенос вычислений на шейдеры.
А причины в том, что приходиться постоянно считать кучу разных хреней, которые можно получить только своими трансформациями, либо выдирать каждый раз из OGL мировую матрицу, что медленнее.
> akaValerius © (10.01.07 00:10) [20]
Не имеет смысла.
У меня такое не проканает.
Пуля за кадр может проходить весь мир...
Плюс проверка идет по hitbox'ам. Да и объектов на одной точке поверхностьи может быть дохрена....
Не суть....
Удачи в проекте.
akaValerius (2007-01-10 00:10:00) [3]> @!!ex © (09.01.07 15:49) [16]
> Кстати, а как ты считаешь пересечение всяких объектов(скажем
> пуль) с телами монстров?Просто у меня эта проблема реально
> стояла, в итоге отказался от glRotate и glTranslate... Все
> считается своими функциями....
Вобщем пуля да и чувак смотрат в перед на 2 еденицы, и если те точки в просранствезаняты она смотрит че это за объект, если тварь, посмотреть по высоте какая часть и в зависимости от этого отнять у нее жизни, я это функцию могу из dll спереть и отправить те если хош?
akaValerius (2007-01-10 00:10:00) [4]> @!!ex © (09.01.07 15:49) [16]
> Кстати, а как ты считаешь пересечение всяких объектов(скажем
> пуль) с телами монстров?Просто у меня эта проблема реально
> стояла, в итоге отказался от glRotate и glTranslate... Все
> считается своими функциями....
Вобщем пуля да и чувак смотрат в перед на 2 еденицы, и если те точки в просранствезаняты она смотрит че это за объект, если тварь, посмотреть по высоте какая часть и в зависимости от этого отнять у нее жизни, я это функцию могу из dll спереть и отправить те если хош?
ors_archangel (2007-01-09 23:56:00) [5]
> @!!ex © (09.01.07 15:49) [16]
> Кстати, а как ты считаешь пересечение всяких объектов(скажем
> пуль) с телами монстров?Просто у меня эта проблема реально
> стояла, в итоге отказался от glRotate и glTranslate... Все
> считается своими функциями....
Так ё-моё: glRotate, glTranslate позволяют быстротрансформировать массивы вершин, а в физике имхо главная оптимизация - наоборот - локализация вычислений, т.е. мы просчитываем только то, что необходимо, и именно на столько, насколько необходимо. Если ты массово применяешь собственную транформацию, то ты можешь терять в скорости уже не разы... Конечно, казалось бы, можно параллельно выводить графику через GPU и трансформации на CPU, но вот именно: CPU будет занят, а потом хотим качественный A.I. Ты, конечно, это понимаешь, так каковы же причины тотальной software-транформации, или она не тотальна?
grisme (2007-01-09 23:36:00) [6]так эта, если он делает допустим так(потелепатим):
-восстановили ед.матрицу
-повернули камеру по осям(ox,oy)
-перенесли камеру по осям(ox,oz)
можно коэфициентам переноса по осям приращать:
для переноса по OZ: значение cos(угол обзора по OY)
для переноса по OX: значение sin(угол обзора по OY)
получится примерно так:
...
if ..._pressed = true then
begin
cam_z:=cam_z + cos(view_y*Pi/180);
cam_x:=cam_x + sin(view_y*Pi/180);
end;
glTranslatef(cam_x,0,cam_z);
...
т.е. если угол по оси oy равен нулю и мы нажали идти вперед. косинус(0) = 1 и мы будем перемещаться строго вперед(перемещ. по z), т.к. синус того же угла = 0(перемещ. по x)
знаки естесственно должны зависеть от нажатой кнопки и приращения нужно подгонять, иначе на единицу транслируя - получится, скорее всего очень быстрое перемещение. Чем и как он будет варьировать углы обзора тут не столь важно. это даже базовая геометрия(времена школы, в пору изучения дедушки Пифагора, да следствий из его теоремы)
antonn (2007-01-09 17:38:00) [7]@!!ex © (09.01.07 15:49) [16]
Для написания полностью нормальной игры достаточно знать как нарисовать треугольник и все
Бу-га-га:)))))
> А gluLookUp - это, кстати, тоже тригонометрия.
это на этом форуме тригонометрия, а в 8м классе общеобразовательной школы - "хренегознает" :)
@!!ex (2007-01-09 15:49:00) [8]
> akaValerius © (09.01.07 00:27) [14]
Да мне то че огорчаться? :))
Кстати, а как ты считаешь пересечение всяких объектов(скажем пуль) с телами монстров?
Просто у меня эта проблема реально стояла, в итоге отказался от glRotate и glTranslate... Все считается своими функциями.... Поделись, мож у тебя оптимальнее....
> antonn © (09.01.07 13:33) [15]
Для написания полностью нормальной игры достаточно знать как нарисовать треугольник и все. Ну для сшастья еще текстурки и свет....
А gluLookUp - это, кстати, тоже тригонометрия.
antonn (2007-01-09 13:33:00) [9]grisme © (08.01.07 23:35) [11]
тригонометрия 8го класса
OpenGL тоже в 8м классе раскрывают? :))
вопрос больше не по формулам (насколько я понял), а по OpenGL - как в нем все завязать:)
akaValerius (2007-01-09 00:27:00) [10]@!!ex Я наверно тя огарчу но триг-метрию я знаю поэтому твари бегают прыгают разворачиваются нормально т.к. они у меня отдельные 3d модели, а вопрос был потому что я не правильно организовал окно игрока, мне нужно было чтоб кинули функцию для моей проблемы типа gluLookUp
@!!ex (2007-01-09 00:15:00) [11]Угу....
И как же у тебя бегают твари? Тоже по Z?
Просто всегда полагал, что первое что делается - это движение по карте....
Ну и вообще я не понимаю, как можно писать двиг без тригонометрии...
Вот сижу пишу... Уже 4 месяц...
И почему то каждый день приходится рисовать треугольнички, то вектор пули расчитать, то Collision Detect, то Triangle Intersect, то направления полета гильзы, то направление куда смотрит юнит, то угол на который он должен наклониться чтобы сбить цель находящуюся выше/ниже, банально тупо спрайти повернуть - тригонометрия......................
Можа мну че нидаганяю, и чичас геймдевелапиру это все нинада?
akaValerius (2007-01-09 00:09:00) [12]@!!ex По признаку того что можно передвигаться по карте, прыгать, бегать, видеть как за тобой бегают твари, переключать рычаги для открытия возможного прохода.
grisme (2007-01-08 23:35:00) [13]жжош..
тригонометрия 8го класса
antonn (2007-01-08 23:30:00) [14]@!!ex © (08.01.07 21:25) [9]
Эти банальные вещи познаются в школе и универе.
бу-га-га:)
сорри, не удержался:)))
@!!ex (2007-01-08 21:25:00) [15]
> akaValerius © (08.01.07 11:43) [4]
По какому признаку определяется готовность движка?
> antonn © (08.01.07 11:46) [5]
Эти банальные вещи познаются в школе и универе.
akaValerius (2007-01-08 16:15:00) [16]DevilDevil. Сапс. Ok. Буду юзать.
DevilDevil (2007-01-08 15:23:00) [17]Отослал тебе недоработанный модуль для моего движка. Текста там многовато, но ты сможешь разобраться, чуток изменить. Тебе нужен класс "TCameraAction". Пользуйся
akaValerius (2007-01-08 11:54:00) [18]Мдя кстати готовые движки не предлогайте, и GLScene тож, да и у меня всё готово кроме етого, осталось ето и стрельбу да и монстров поумнее, и усё новый 3D Action готов.
antonn (2007-01-08 11:46:00) [19]Туплю (08.01.07 9:28) [3]
<offtop>
Совсем недавно была мысль, сезонное обострение чтоли?
Народ ломиться писать игры, не зная банальных вещей......
</offtop>
м/у прочим, про эти банальные вещи познаются именно таким способом... а игры пишут, сначала прочитав кучу документации, только те - кому заплатят и у кого это работа.
akaValerius (2007-01-08 11:43:00) [20]Да у меня все готово текстурирование, прыжки, перемещение, загрузка 3D анмиции монстров, карта и т.д. так что я не такой ламак и не использую Copy&Paste. Это единственная проблема я понимаю что если поворачивать сцену то он идет правильно, но картинка не правильная, а при поворте взгляда всё наоборот. Так что вы меня не так поняли движок свой у меня почти готов. Кстати вид от 1 лица.