-
Добрый день! Я начинающий, у меня возникла проблема следующего характера. Я делаю игру(стрелялку) и у меня проблема с выстрелами. Для создания выстрела я использую этот код
//по команде рисуем снаряд if pul.fireon then begin //pul.XRot:=ModR; if Pul.active then Pul.Forv; Pul.Fast:=14; Map.GetY(Cam.XPos, Cam.ZPos); glBindTexture(GL_TEXTURE_2D, den); pul.Rend(0,0,plus,1,10,10);//рисуем снаряд EffectDraw(Pul.XPos, -Pul.YPos, Pul.ZPos);//рисуем дым от снаряда MAp.GetY(Pul.XPos, Pul.ZPos); if Map.BAN > -Pul.YPos-0.7 then // проверка условия косания земли begin VzrivBool:=True; pul.active:=false; if VzrivBool= true then begin VX:=Pul.XPos; VY:=Pul.YPos; VZ:=Pul.ZPos; Np.X:=VX;Тоесть рендер NP.Y:=VY; Np.Z:=VZ; end; NP.active:= true;//рисуем врыв end; NP.active:= true; end; // здесь заканчивается рендеринг снаряда
{Прорисовка эффекта} procedure EffectDraw(x, y, z: glFloat); var cam: TGLNrf3; begin glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_Decal); glEnable(GL_NORMALIZE); glPushMatrix; glDisable(gl_Fog); glDisable(GL_LIGHTING); glTranslatef(-x,y,-z); glScaleF(0.02, 0.02, 0.02); glrotatef(angy,1,0,0); glrotatef(angx,0,0,1); glcolor4f(0.5,0.5,0.5,0.5); glEnable(GL_DEPTH_TEST); glDisable(GL_BLEND); glEnable(GL_TEXTURE_2D); glEnable(GL_BLEND); glBlendFunc(GL_ONE_MINUS_DST_COLOR,GL_ONE); rotate_point(10,part.posis[0],part.posis[1]); cam[0]:=0; cam[1]:=1; cam[2]:=0; rotate_point( angy-270,cam[1],cam[2]); rotate_point(-angx-180,cam[0],cam[1]); part2.add_particle; part2.reset_pr; XGLEnableTexture(LTGA); part2.draw_par(cam, 6500); glEnable(GL_DEPTH_TEST); glDisable(GL_BLEND); glEnable(gl_Fog); glEnable(GL_LIGHTING); glPopMatrix; end; //прорисовка снаряда procedure Tpul.Rend( x, y, z, r: GLFloat; slices, stacks: GLInt); var quad: GLUQuadricObj; begin glEnable(GL_CULL_FACE); glCullFace(GL_Back); glEnable(GL_BLEND); glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL); quad := gluNewQuadric; gluQuadricNormals(quad, GLU_SMOOTH); // для освещения, если надо gluQuadricTexture(quad, true); // для текстуры, если надо glColor3f(1, 0, 0); glColor4f(0.0,0.0, 0, 0.1); glPushMatrix; glTranslatef( -x-Xpos, y-ypos, -z-zpos); gluSphere( quad, r, slices, stacks ); glPopMatrix; gluDeleteQuadric( quad ); glDisable(GL_BLEND); glDisable(GL_CULL_FACE); end;
Я не могу разобраться почему если после первого выстрела пока пуля не каснулась земли выстрелить ещё раз то первая пуля исчезнет так и не долетев до земли. То есть прорисовка первой пули заканчивается после появления второй.Вопрос как это исправить? И у меня возник ещё один вопрос. Я хочу сделать стрелялку от первого лица.И я не знаю как сделать так что бы модель оружия находилась перед экраном и двигалась вместе с камерой. P.S. Я очень прошу вас помочь мне так как покачто моих знаний не хватает, а игру очень хочется сделать.
-
Ну так создай массив, в который будешь добавлять вновь созданную пулю, а если она долетела до земли, то удалять из массива. А ещё лучше использовать список.
-
Парень... Забей делать стрелялку... Я конечно никого не смею мерить с собой, но мой опыт: 10 лет программирования на дельфи, пол года работы в одной из старейших геймдев контор России. 2 года ОпенГЛ и DX и всякой другой ерунды... Пол года для 3Д стрелялки только внешнюю оболочку писал. Тоесть сейчас(после полугода разработки) есть частично готовый(колиззия, загрузка уровней, скелетная анимация, сло-мо, попадания по частям тела, скриптовый двиг для уровней, полтора десятка видов оружия, включая гранатометы и ракетницы, поддержка рукопашного боя) двиг без ИИ и физики. При том, что я писал все свободное время не останавливаясь практически и не переписывал ничего, при том, что я ЗНАЛ что и как надо писать. Тоесть вопросов вида, как же все таки сделать это?? не возникало. Простая архитектура на базе ООП. И самое главное... Сейчас я скорее всгео НЕ БУДУ доделывать эту игру, поскольку тупо надо все переделывать. А теперь прикинь, сколько времени ты будешь писать проект, если ты с этим всем ВООБЩЕ не знаком. А ты не знаком, это видно по коду и по вопросу. Для того, чтобы написать крупный проект, нужно две вещи: 1) понимать, как работает компьютер(читай понимать ассемблер), как память распределяется и все такое. 2) Знать ООП. Без этого написать что-то серьещное не реально. 1) Будешь делать много ошибок тупейших. Типа описанной тобой. 2) Будет ужасный код, в котором запутаешься.(Опять же, у меня есть проект, детский на штуку строк... Без ООП. Все в одном модуле... Там черт ногу сломит...)
P.S. Я не презываю делать тетрис(Хотя если вспомнить тетрис от Creative - более чем достойное начало). Я призываю тебя ЗДРАВО оценить свои знания на НАСТОЯЩИЙ момент и сделать тот проект, который ты сейчас МОЖЕШЬ сделать. Тоесть возьми проект и банально в голове разложи ео на составляющие. И подумаю как каждую составляющую можно решаить(не конкретику, общее решение), если за 10 минут смог это сделать, берись за проект.
P.P.S. Все выше сказанное - сугубо ИМХО.
-
-
> [3] antonn © (10.07.07 22:21)
Ну во первых ты не знаешь что я писал. ;) А во вторых,я про себя говорю, а не про Дартмана. Он круче меня по кодингу, тут я и спорить не буду.
-
Кстати, если дашь ссылочку на конкретнйы пример 3д двигла качественного написанного за месяц, буду благодарен...
P.S. Alien Shooter писали 2 месяца. ;)
-
> @!!ex ©
ну ты даёшь) человек конкретный вопрос задаёт, а ты тут такое... наболело чтоли?)
-
> > Ну во первых ты не знаешь что я писал. ;)
не знаю, но вижу код, который выше:)) Если ты с этим кодом проводишь параллель - значит не просто так? :)
-
> RzCoDer © (10.07.07 22:49) [6]
Ну и наболело тоже... Поскольку своими проектами не занимаюсь уже с января... Времени нету.. и желания кодить после работы... Да и на вопрос уже ответили в [1]
> antonn © (11.07.07 00:00) [7]
Я вижу код и могу судить о не высоком уровне программирования. Кстати, ссылочку то дай, на проект который за месяц написали.(Можно даже не с 0, хотя я говорил именно об этом)
-
-
И чего общего в этом конкурсе с тем, что я описал? ( колиззия - максимум что есть в конкурсных работах - пересечение прямоугольников. загрузка уровней - уровни элементарные. скелетная анимация - есть, тут не поспоришь. сло-мо - не увидел. попадания по частям тела - не увидел. скриптовый двиг для уровней - не увидел. полтора десятка видов оружия,включая гранатометы и ракетницы - не увидел. поддержка рукопашного боя - не увидел. ) И вообще из этих демок только одна - 3д экшн. половина из них вообще в 2Д. Д аи написаны не с 0. Вот и месяц. Странный пример. Чесс слово.
-
> Странный пример. Чесс слово.
странный ты, чесс слово:) "Пол года для 3Д стрелялки только внешнюю оболочку писал." - вот в этой фразе ниче такого никак по умолчанию не входит, не надо пальцы гнуть, все равно никто не ахнет:)
-
> antonn © (11.07.07 12:58) [11]
Бррр. Да ни гну я пальцы. Привожу пример просто. А ты читаешь ИМХО как то через строчку...
По умолчанию не входит. Поэтому я и написал дальше:
> Тоесть сейчас(после полугода разработки) есть частично готовый(колиззия, > загрузка уровней, скелетная анимация, сло-мо, попадания > по частям тела, скриптовый двиг для уровней, полтора десятка > видов оружия, включая гранатометы и ракетницы, поддержка > рукопашного боя) двиг без ИИ и физики.
-
> @!!ex © (10.07.07 21:24) [2] > Парень... Забей делать стрелялку...
Это ты автору сразу предлагаешь убить себя об стену? :) Если всего боятся и ни за что не браться, то ничему не научишься... так что все нормально, проблемы они как раз, для того чтобы их преодолевать и находить решения...
-
> [13] Домик (11.07.07 19:03)
Зачем убиваться? делать что нить попроще... А потом уже и убийцу HL можно сваять.
-
Помогите мне
-
Чем помочь то? Сказали те: юзай массив.
-
А как именно?
-
> [17] |<ent (11.07.07 21:50)Приблизительно так: type
TCoord=record
X,Y,Z:Integer;
end;
var
Missiles:array of TCoord;
-
> [17] |<ent (11.07.07 21:50)
Народ, и после таких вопросов вы все еще считаете, что в своем первом опсте я был не прав??
> [18] ANTPro © (11.07.07 22:36)
Уровня знаний не хватит, чтобы понять динамические массивы....
> |<ent, мой тебе совет, забей пока на игру и возьми какую нить простоую книжку для начинающих. Учебник. Где просто тупо будут объяснятся основы. Я понимаю, тебе влом... Но дело в том, что без основ все равно ничерта не получится. Я могу тебе дать готовый код работы с пулей. Но легче тебе от этого не станет. Ты должен ПОНЯТЬ как оно работает. Аозьми книдку и просто тупо прочитай и сделай все примеры. Я в свое время так и сделал, когда с паскаля на дельфи переходил. Просто весь день читал книжку и клепал примеры. Очень помогло.
|