![]() |
Re: Создаём свой FPS (first person shooter)
Это моя привычка ставить мало пробелов, в следствие чего, скрипт криво обработал конструкцию. Скачай аттач - там всё работоспособно.
|
Re: Создаём свой FPS (first person shooter)
Молодец полезное дело делаешь!!!
Но у меня возник вопрос! Почему когда я двигаюсь навстречу БОТУ,я прохожу через него? |
Re: Создаём свой FPS (first person shooter)
Потому что Blitz3D не обрабатываеи коллизию с движущимся мешем
UPD: что-то я сламерился (не в этом случае коллизия не работает) спс alc'o'SHoLiK за то что тыкнул меня носом Скоро исправлю |
Re: Создаём свой FPS (first person shooter)
Что ещё рассмотреть?
|
Re: Создаём свой FPS (first person shooter)
Цитата:
|
Re: Создаём свой FPS (first person shooter)
Спасибо, ты делашь нужное дело и не называешь новичков ламерами. Щас нажму кнопку Thanks! А как сделать стаистику, ну типа чтобы на экране отображалось здоровье и уменьшалось когда надо? А и тоже самое с патронами, чтоб они не были бесконечными. Заранее спасибо.
|
Re: Создаём свой FPS (first person shooter)
Вложений: 2
Эх.
Убедился в истине - программ без ошибок не бывает. Пока правил коллизии (надо было поставиьт EntityRadius и сделать бота адекватных размеров) нарыл опечатку(!!! я в ужасе - этот мануал уже прочитало столько народу - в том числе и не славяноговрящего - а опечатка всё ещё жива была) и мат.ошибку в модели физики (любопытно- в параллельных проектах я её не допускал). Вот поифкшенный код. UPD: У меня порой складывается ощущение, что своим туторам я себе помгаю,а не окружающим. Ну что ж - зато теперь начинающие знают - как долго могут жить ошибки и как просты они могут быть. Так сказть - не тутор, а реалити-шоу - пишу FPS. UPD2: так что не удивляйтесь - если черз пол-года я ещё найду ошибку в первых строках программы. UPD3: да-да... |
Re: Создаём свой FPS (first person shooter)
Я первый шуттер полгода писал - и все время что то исправлял.
Сейчас, как гляну на код - плохо становиться. штук 150 функций, и совершенно не помню что и зачем :) А представьте проект класса АА на сях в 200 000 строк ! |
Re: Создаём свой FPS (first person shooter)
стрелять ботов научи....
можно еще ограничить обзор у бота не только расстоянием, но и углом зрения... пжл... ждемс... да и еще... когда у игрока кончается жизнь надо с ним что-то сделать... :) |
Re: Создаём свой FPS (first person shooter)
Линия жизни
Линию можно сделать прямоугольником (RECT) и отрисовывать ей при каждом обновлении экрана. Это медленно. Можно сделать картинкой (image) будет работать быстрее (насколько мне известно) - но тоже не лучший способ. Лучше и универсальнее всего (подумайте а различных разрешениях экрана) - делать через 3D - спрайтом. Чтобы не изобретать велик - возьмём готовую функцию Tormoz-а и немного модифицируем её (создав для этого специальный тип): [highlight=blitzbasic] Type xLine Field mesh Field texture End Type Function CreatePlane_m.xLine(File$,fl) xl.xLine=New xLine Local texture,scx#,scy# mesh=CreateMesh() surf=CreateSurface(mesh) AddVertex surf,-1,1,0,0,0:AddVertex surf,1,1,0,1,0 AddVertex surf,1,-1,0,1,1:AddVertex surf,-1,-1,0,0,1 AddTriangle surf,0,1,2:AddTriangle surf,0,2,3 UpdateNormals mesh texture=LoadTexture ( File$,fl) img=LoadImage(File$) scx#=ImageWidth (img) scy#=ImageHeight (img) ScaleMesh mesh,scx/256,scy/256,1 EntityTexture mesh,texture FreeImage img xl\mesh=mesh xl\texture=texture Return xl End Function [/highlight] Эта функция создаст квад необъодимых размеров - под картинку File$. [highlight=blitzbasic] Function create_user(x#=0,y#=10,z#=0) ..... sprite.xLine=CreatePlane_m("H.bmp",0) EntityParent sprite\mesh,camera EntityOrder sprite\mesh,-1 PositionEntity sprite\mesh,-1.65,1.45,2 EntityFX sprite\mesh,1 user_xline=sprite [/highlight] Создаём квад, привязываем его к камере. Устанавливаем порядок отрисовки (самым последним - поверх всех объектов). Позиционирцем. И ставим полноцветность (чтобы яркость изображения не зависела от текущего освещения). В папку с проектом кладём картинку - прямоугольник (у меня - размером 200 на 20). [highlight=blitzbasic] Global user_xline.xLine [/highlight] Ф-ция изменения состояния шкалы [highlight=blitzbasic] Function Change_H(xl.xLine,h) SetBuffer TextureBuffer(xl\texture) Color 0,0,0 Rect 0,0,TextureWidth(xl\texture),TextureHeight(xl\text ure) Color 255,0,0 Rect 0,0,Float(TextureWidth(xl\texture))/100*h,TextureHeight(xl\texture) SetBuffer BackBuffer() EntityTexture xl\mesh,xl\texture End Function [/highlight] Обработаем в Function update_bot(): [highlight=blitzbasic] user_H=user_H-Rand(1,7) Change_H(user_xline,user_H);новое a\last_damage_time=MilliSecs() [/highlight] удаляем: [highlight=blitzbasic] Text 10,40,"H="+user_H [/highlight] допишем красивости ради в Function create_user(x#=0,y#=10,z#=0) [highlight=blitzbasic] EntityAlpha sprite\mesh,0.6 [/highlight] Упростим и усовершенствуем процедуру изменеия тестуры квада: [highlight=blitzbasic] Color 0,0,0 xs=Float(TextureWidth(xl\texture))/100*(100-h) xp=TextureWidth(xl\texture)-xs Rect xp,0,xs,TextureHeight(xl\texture) [/highlight] Теперь можно немного поуркашать картинку. /См. аттач/ Кроме того я ещё подправил физику ботов и игрока (прыжок и гравитацию). |
Re: Создаём свой FPS (first person shooter)
Вложений: 2
код+ресурсы
|
Re: Создаём свой FPS (first person shooter)
Последний патрон
Модифицурем наш класс индикаторов [highlight=blitzbasic] Type xLine Field mesh Field texture Field max_count;масимальное значение индикатора End Type [/highlight] и обработчик индикатора соответственно: [highlight=blitzbasic] Function Change_H(xl.xLine,h) .... xs=Float(TextureWidth(xl\texture))/xl\max_count*(xl\max_count-h) .... [/highlight] Установим кол-во патронов в инвентаре для каждого типа оружия. Укажем величину шкалы жизни. [highlight=blitzbasic] Function create_user(x#=0,y#=10,z#=0) .... user_inv\s[0]=100 user_inv\s[1]=1000 .... sprite\max_count=100 ... [/highlight] Пользователь может стрелять, только если есть боеприпасы к данному виду вооружения. Отрицательную область оставим для оружия с неиссякаемым запасом. [highlight=blitzbasic] If MouseHit(1) And MilliSecs()-user_inv\last_shot_time>shot_S(user_inv\current)\r eload_time And user_inv\s[user_inv\current]<>0 user_gun=FindChild(GUN,"END") create_shot(EntityX(user_gun,1),EntityY(user_gun,1 ),EntityZ(user_gun,1),EntityPitch(camera),EntityYa w(user),0,user_inv\current) user_inv\last_shot_time=MilliSecs() user_inv\s[user_inv\current]=user_inv\s[user_inv\current]-1 EndIf [/highlight] Опишем максимально вохможное кол-во патронов для этого оружия: [highlight=blitzbasic] Type SHOT_TYPE Field sprite Field damage Field max_dist Field v# Field reload_time Field max End Type ...................... shot_S(0)\sprite=LoadSprite("sprite0.bmp") HideEntity shot_S(0)\sprite shot_S(0)\damage=95 shot_S(0)\max_dist=100 shot_S(0)\v=0.3 shot_S(0)\reload_time=1500 shot_S(0)\max=100; shot_S(1)\sprite=LoadSprite("sprite1.bmp") HideEntity shot_S(1)\sprite shot_S(1)\damage=10 shot_S(1)\max_dist=1000 shot_S(1)\v=0.1 shot_S(1)\reload_time=0 shot_S(1)\max=1000; .......................... [/highlight] Создадим индикатор [highlight=blitzbasic] Global user_b_xline.xLine [/highlight] Настроим его [highlight=blitzbasic] Function create_user(x#=0,y#=10,z#=0) .... ;= sprite.xLine=CreatePlane_m("BC.bmp",0) EntityParent sprite\mesh,camera EntityOrder sprite\mesh,-1 PositionEntity sprite\mesh,-1.9,0.7,2 RotateEntity sprite\mesh,0,0,90 EntityFX sprite\mesh,1 EntityAlpha sprite\mesh,0.6 sprite\max_count=shot_S(user_inv\current)\max user_b_xline=sprite ;= [/highlight] Обработаем при уменьшении патронов... [highlight=blitzbasic] If MouseHit(1) And MilliSecs()-user_inv\last_shot_time>shot_S(user_inv\current)\r eload_time And user_inv\s[user_inv\current]<>0 user_gun=FindChild(GUN,"END") create_shot(EntityX(user_gun,1),EntityY(user_gun,1 ),EntityZ(user_gun,1),EntityPitch(camera),EntityYa w(user),0,user_inv\current) user_inv\last_shot_time=MilliSecs() user_inv\s[user_inv\current]=user_inv\s[user_inv\current]-1 Change_H(user_b_xline,user_inv\s[user_inv\current]) EndIf [/highlight] .. и при смене вооружения [highlight=blitzbasic] Function change_item(i.inventar,move%) p=i\current While True p=p+move If p<0 p=9 If p>9 p=0 If i\s[p]<>0 Exit Wend Local bool=False If i\current<>p bool=True i\current=p Return bool End Function ... Function update_user() ... change_bool=change_item(user_inv,MouseZSpeed()) If change_bool user_b_xline\max_count=shot_S(user_inv\current)\ma x Change_H(user_b_xline,user_inv\s[user_inv\current]) EndIf End Function [/highlight] Аналогично привинчивается индикатор перезарядки. |
Re: Создаём свой FPS (first person shooter)
Вложений: 4
8) Что-то я разогнался. Интересно - много-ли ошибок :@
|
Re: Создаём свой FPS (first person shooter)
Круто! Но почему когда здоровье кончается перс не умирает, а патроны кончаются только тогда, когда пользуешься дробовиком?
|
Re: Создаём свой FPS (first person shooter)
Цитата:
Патроны кончаются всегда - просто для пистолета - их много больше, поэтому изменение незаметно |
Re: Создаём свой FPS (first person shooter)
Hi!
Нашел ошибку, когда патроны заканчиваются игра подвисает.... жду урок про стрельбу ботов.... |
Re: Создаём свой FPS (first person shooter)
БагФиксN
Вчера при модификации индикаторов забыл учесть ещё возможность прироста индикатора (шкала жизни была описана только для уменьшения). Короче говоря: [highlight=blitzbasic] Function Change_H(xl.xLine,h) tex=CreateTexture(TextureWidth(xl\texture),Texture Height(xl\texture)) CopyRect 0,0,TextureWidth(xl\texture),TextureHeight(xl\text ure),0,0,TextureBuffer(xl\texture),TextureBuffer(t ex) SetBuffer TextureBuffer(tex) Color 0,0,0 xs=Float(TextureWidth(xl\texture))/xl\max_count*(xl\max_count-h) xp=TextureWidth(xl\texture)-xs Rect xp,0,xs,TextureHeight(xl\texture) SetBuffer BackBuffer() EntityTexture xl\mesh,tex FreeTexture tex End Function [/highlight] Создаём текстуру tex с размерами текстуры-образца для данного индикатора (xl\texture). Затем копируем в новую текстуру образец (берём участок от 0,0 до ширина,высота образца и копируем его в новую тексу, начиная с координат 0,0). Затем проводим модификации с новой текстурой, накладываем её на квад и удаляем. |
Re: Создаём свой FPS (first person shooter)
Цитата:
|
Re: Создаём свой FPS (first person shooter)
Боевая система2
Добавил обоймы. Для этого в типе заряда сделал поле, отвечающее за кол-во патронов в обойме: [highlight=blitzbasic] Type SHOT_TYPE Field sprite Field damage Field max_dist Field v# Field reload_time Field InCartridge Field max End Type [/highlight] А в инвентаре - массив, хранящий текущее число выстрелов с момента последней перезарядки, и флаг перезарядки. [highlight=blitzbasic] Type inventar Field s[10] Field InC[10] Field current Field last_shot_time Field reload_flag End Type [/highlight] Для визуализации - я сделал индикатор. Причём он несёт двойную нагрузку: в процессе стрельбы он показывает расход патронов в обойме, в процессе перезарядки (клавиша R) - время, оставшееся до конца смены обоймы. [highlight=blitzbasic] Global user_reload_xline.xLine .... Function create_user(x#=0,y#=10,z#=0) .... sprite.xLine=CreatePlane_m("reload.bmp",0) EntityParent sprite\mesh,camera EntityOrder sprite\mesh,-1 PositionEntity sprite\mesh,-1.8,0.7,2 RotateEntity sprite\mesh,0,0,90 EntityFX sprite\mesh,1 EntityAlpha sprite\mesh,0.6 sprite\max_count=user_inv\InC[user_inv\current] user_reload_xline=sprite [/highlight] А дальше ужОс в обновлении игрока: [highlight=blitzbasic] If MouseHit(1) And user_inv\InC[user_inv\current]<>0 user_gun=FindChild(GUN,"END") create_shot(EntityX(user_gun,1),EntityY(user_gun,1 ),EntityZ(user_gun,1),EntityPitch(camera),EntityYa w(user),0,user_inv\current) user_inv\s[user_inv\current]=user_inv\s[user_inv\current]-1 Change_H(user_b_xline,user_inv\s[user_inv\current]) user_inv\InC[user_inv\current]=user_inv\InC[user_inv\current]-1 Change_H(user_reload_xline,user_inv\InC[user_inv\current]) EndIf [/highlight] Если текущая обойма не пуста - совершаем выстрел. Причём уменьшаем не только общее кол-во патронов, но икол-во патронов в обойме. Эти две величины в данной реализации независимы, поэтому надо строго следить за логикой. [highlight=blitzbasic] If KeyHit(19);reload user_inv\reload_flag=True user_inv\last_shot_time=MilliSecs() user_reload_xline\max_count=Shot_S(user_inv\curren t)\reload_time EndIf [/highlight] Если пользователь нажал R - ставим флаг перезарядки в истину, замеряем время и изменяем размер индикатора обоймы (как вы помните, теперь он несёт другую роль - указывать оставшееся до конца смены обоймы время). [highlight=blitzbasic] If MilliSecs()-user_inv\last_shot_time>shot_S(user_inv\current)\r eload_time And user_inv\reload_flag=True user_inv\reload_flag=False x=Shot_S(user_inv\current)\InCartridge If x>user_inv\s[user_inv\current] x=user_inv\s[user_inv\current] user_inv\InC[user_inv\current]=x user_reload_xline\max_count=Shot_S(user_inv\curren t)\InCartridge EndIf [/highlight] Если время перезарядки вышло и сам факт начала перезарядки был, то ставим флаг перезарядки в ложь. Смотрим - досаточно ли патрон на целую обойму данного оружия: если нет, то пихаем в обойму всё что осталось. Меняем размер инидикатора перезарядки - теперь он вновь исполняет старую функцию: указывает кол-во патрон в обойме. [highlight=blitzbasic] If user_inv\reload_flag=False change_bool=change_item(user_inv,MouseZSpeed()) Else Change_H(user_reload_xline,MilliSecs()-user_inv\last_shot_time) EndIf [/highlight] Если идёт перезарядка - запрещаем смену оружия и меняем показания индикатора в соответствии с прошедшим временем. [highlight=blitzbasic] If change_bool=True user_b_xline\max_count=shot_S(user_inv\current)\ma x Change_H(user_b_xline,user_inv\s[user_inv\current]) user_reload_xline\max_count=Shot_S(user_inv\curren t)\InCartridge Change_H(user_reload_xline,user_inv\InC[user_inv\current]) EndIf [/highlight] При смене оружия не забываем настроить индикатор на величину патронов в обойме у данного рода оружия, и указать текущее кол=во патронов в обойме. В общем - понять сложно, но можно. |
Re: Создаём свой FPS (first person shooter)
Вложений: 2
:vinsent: :killall:
|
Re: Создаём свой FPS (first person shooter)
ADD_N
Удобно написать функцию добавления данного кол-ва патронов в инвентарь: [highlight=blitzbasic] Function ADD_item(i.inventar,S,Count) i\s [ S ] =i\s [ S ] +Count If i\InC [ S ] =0 x=Shot_S(S)\InCartridge If i\s [ S ]<x x=i\s [ S ] i\InC [ S ]=x EndIf End Function [/highlight] Аргументы - инвентарь, слот (соответсвенно - тип оружия), кол-во патронов. Функция сама добавит патроны в инвентарь, проверит кол-во патронов в обойме и если оно равно нулю будет произведенена попытка заполнить имеющимся кол-вом обойму. [highlight=blitzbasic] Function create_user(x#=0,y#=10,z#=0) ... ADD_item(user_inv,0,100) ADD_item(user_inv,1,1000) [/highlight] |
Re: Создаём свой FPS (first person shooter)
БагФиксN+1
Благодаря GoodWin исправлена работа функци при пустом инвентаре. Заодно пофикшена обработка нулевого смещения по инвентарю. [highlight=blitzbasic] Function change_item(i.inventar,move%) If move%=0 Return Local size_inv=10 p=i\current iter=0 While True p=p+move iter=iter+1 If p<0 p=size_inv-1 If p>size_inv-1 p=0 If iter>size_inv Return False If i\s[p]<>0 Exit Wend Local bool=False If i\current<>p bool=True i\current=p Return bool End Function [/highlight] |
Re: Создаём свой FPS (first person shooter)
Вложений: 2
:teach:
|
Re: Создаём свой FPS (first person shooter)
Проблема в создании облаков:
Почему у меня, когда я зделал облака как всё было написано, было просто белое небо, я и пути к картинкам прописывал и всё равно вместо облаков чистое белое небо? |
Re: Создаём свой FPS (first person shooter)
Вывод: не всё сделал как написано, или же аппаратные проблемы с твоей стороны.
Скачай последний вариант кода с ихсодниками и проверь адекватность облаков в нём (без изменений). |
Re: Создаём свой FPS (first person shooter)
Что-то затихло, а я жду...жду....:)
|
Re: Создаём свой FPS (first person shooter)
Цитата:
|
Re: Создаём свой FPS (first person shooter)
стрелять ботов ты по моему так и не научил...
и даже на этом можно не останавливаться: создать уровень... добавить бонусы... и т.д. и т.п. |
Re: Создаём свой FPS (first person shooter)
ok. постараюсь)
|
Re: Создаём свой FPS (first person shooter)
Вложений: 2
Закрутился я с учёбой.
Кода на 10 минут: стреляющие боты |
Re: Создаём свой FPS (first person shooter)
Ну что - всё понятно в коде?
|
Re: Создаём свой FPS (first person shooter)
|
Re: Создаём свой FPS (first person shooter)
Молодец! Классный урок!
Теперь бы неплохо написать как сделать в 3Д Максе модельку врага и оружия. Но и так мне понравилось! З.Ы. Может, туториалом по моделям займусь я.... на каникулах... |
Re: Создаём свой FPS (first person shooter)
Цитата:
|
Re: Создаём свой FPS (first person shooter)
Урок про создание ФПС - редкость, считай это большой плюс как Impersonalis'у так и булке.
|
Re: Создаём свой FPS (first person shooter)
Можно ли реализовать щит (или броню, допустим чтобы когда игрока бъют то изначально забиралась она, а потом постепенно восстанавливалась, а когда закончится то начинали бы отбавлятся жизни) и отдачу при выстреле? :) было бы реалестичнее, притом разную для дробовика и пистолета.
|
Re: Создаём свой FPS (first person shooter)
Конечно можно. Реализуй.
|
Re: Создаём свой FPS (first person shooter)
Отдачу - сделаю как освобожусь (кодить мало, но ведь каменты нуны).
По поводу системы регенерации брони - не очень понял. |
Re: Создаём свой FPS (first person shooter)
то я немного перепутал местами слова и сказал недоконца свою мысль, хотел сказать: сделать игроку броню или еще лучше чтото вроде само восстанавливающегося щита. (конечно извиняюсь, я новичёк в этом деле и покачто мне до щитов и т. д. дела быть недолжно, но это обычное любопытство... да и пригодится все ж таки)
|
Re: Создаём свой FPS (first person shooter)
Броня то же здоровье. Просто создай две полоски здоровия и покрась их в разные цвета, а дальше сделай так чтоб жизни отнимались сначала с одной полоски а потом, когда они кончатся на первой, отнимай на второй и тд. Так можно сделать несколько уровней защиты. Ну это конешно все в теории, но попробуй это сделать сам.
|
Re: Создаём свой FPS (first person shooter)
Цитата:
|
Re: Создаём свой FPS (first person shooter)
Вложений: 2
Вот 2 нововведения.
Единственное что - отдачу сделал в виде ирреального импульса с нулевой длительностью по времени. :pure_magic: |
Re: Создаём свой FPS (first person shooter)
Классная работа !!!
Но почему все в php ? Можешь в html перевести, а то у меня все php вскываются Дримвивером. |
Re: Создаём свой FPS (first person shooter)
А ты при скачке просто перименовывай. ;) это такой баг на всех Bulletin форумах.
|
Re: Создаём свой FPS (first person shooter)
Цитата:
|
Re: Создаём свой FPS (first person shooter)
Crayzi, обычно смену оружия не блокируют, а просто при смене оружия останавливается перезарядка и обнуляется. Т.к. ситуация когда перезаряжаешся, и вдруг меняешь на пистолет чтобы отбиться от подбежавшего моба - хорошо, а умереть и тыкая на цифру 2 чтобы вытащить другое оружее, а оно не вылазит - взбесит игрока :)
|
Re: Создаём свой FPS (first person shooter)
Цитата:
А в опере усе норм) |
Re: Создаём свой FPS (first person shooter)
Цитата:
подправьте 250 строка Код:
If MouseHit(1) And user_inv\InC[user_inv\current]<>0 And user_inv\reload_flag=False |
Re: Создаём свой FPS (first person shooter)
[quote=impersonalis][quote]
Дай пожалуйста урок про отображение полосок с жизнями ботов над ними, ато мне после многих попыток методом научного тыка:bad: :moil: я все ж почти здался... (я так понял там надо както с помощью команды "Handle" или както так, но я даже непредставляю как с ней работать, по тому как сделано отбирание жизней и удаление ботов я разобратся не смог:( ). |
Re: Создаём свой FPS (first person shooter)
К сожалению, пока не обладаю достаточным временем.
Но в принципе возможны 2 базовых вараинта: 3д: создавать спрайты-полсоы, несоредственно над ботами 2д: при помощи команды CameraProject camera,x#,y#,z# и сопутствующих, определять 2д координаты бота на экране и создавать 2д-примитивы |
Re: Создаём свой FPS (first person shooter)
Цитата:
Минут 10 спустя: О, нащел темку где вроде бы то что надо обсуждалось, если разберусь то добавлю полоски сам и отпишусь сдесь чтоб ты не тратил время зря. |
Re: Создаём свой FPS (first person shooter)
Объясняю на пальцах, про полоску жизни. Есть две полоски одна отображает максимальное кол-во жизни бота, вторая изображает текущее кол-во жизни и рисуется поверх первой. Так вот длинна(ширина если угодно) второй полосы как я уже сказал зависит от текущего кол-ва жизни бота и вычисляется так:
длина_2_полоски = (длина_1_полоски * НР_бота) / Максимум_НР_бота более подробно будет в статье... |
Re: Создаём свой FPS (first person shooter)
Цитата:
|
Re: Создаём свой FPS (first person shooter)
Завести элемент в типе под названием HP. И прибавлять/отнимать от него, то есть:
Код:
|
Re: Создаём свой FPS (first person shooter)
H@NON, если уж по чесноку то "damage" и к томуж надо делать проверку типа: иф бот.НР <= 0 зен бот.суицид
|
Re: Создаём свой FPS (first person shooter)
Это было написано для примера, так сказать показана сама реализация. То что с этим семплом делать решать каждому автору в частности. К тому же для наглядности приведены многоточия, чтоб показать что это только кусок кода
|
Re: Создаём свой FPS (first person shooter)
Цитата:
Модельки оружия я нашел там пистолеты есть. |
Re: Создаём свой FPS (first person shooter)
а можно еще раз аттач выложить?а то неработает:((
|
Ответ: Re: Создаём свой FPS (first person shooter)
Цитата:
|
Ответ: Создаём свой FPS (first person shooter)
помоему большинство из этой ничему не научилось,чистый копипаст
|
Ответ: Создаём свой FPS (first person shooter)
nuclear-90, истину глаголешь ;)
|
Ответ: Создаём свой FPS (first person shooter)
Цитата:
|
Ответ: Создаём свой FPS (first person shooter)
impersonalis
тебе +1 однозначно,я хоть код не копипастил,а разные идеи взял на вооружение :) |
Ответ: Создаём свой FPS (first person shooter)
Не могли бы выложить рабочую версию?
|
Часовой пояс GMT +4, время: 19:46. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot