Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Blitz3D > FAQ

FAQ Туториалы и часто задаваемые вопросы

Ответ
 
Опции темы
Старый 19.09.2007, 03:29   #1
Crayzi
ПроЭктировщик
 
Регистрация: 26.06.2007
Сообщений: 194
Написано 21 полезных сообщений
(для 25 пользователей)
Смущение Re: Создаём свой FPS (first person shooter)

Хе, решил всеже сам коечто подправить, об этом уже писалось ранее (не мной) но было както замято. Я методом выдирания с горем пополам приклеил нормальную на мой взгляд систему прыжка, не смейтесь, я убил на эту процедуру около 40-50 минут 8=D. Там все нововведения выделены (ну короч там ясно будет), вроде бы все старое что было (мож конечно чтото и убил ненароком) переделал в обычный комментарий и тож выделил.
З.ы. Вспомнил что еще добавил доп. предмет и чуток поизменял характеристики старых.
impersonalis ты непротив чтобы я продолжил потрошение и переделку сей миниигрушки с последующим выкладыванием сдесь в виде продолжения или дополнения(я несобираюсь полностью брать в свои руки эту темку, буду просто изредка, добавлять чтонить новенькое, подправлять чтонить там , какрас на практике и критике всегда легче чем тихо сам с собою)? Или так непойдет?
P.s. Название убойное у архива
(Offline)
 
Ответить с цитированием
Старый 21.09.2007, 01:11   #2
AndruXa
Знающий
 
Регистрация: 10.09.2007
Сообщений: 262
Написано 6 полезных сообщений
(для 8 пользователей)
Re: Создаём свой FPS (first person shooter)

Хм..... смотрю я на все это и думаю, что чего-то не хватает. И решил добавить.....
Function update_user()
sp#=.05
shoe_size#=7.0 
head_bang_X#=0.1 
head_bang_Y#=0.1
walking=0
If KeyDown(30) Then: MoveEntity user,-V#,0,0 : walking=1: EndIf
If KeyDown(32) Then: MoveEntity user, V#,0,0 : walking=1: EndIf
If KeyDown(17) Then: MoveEntity user,0,0, +V# : walking=1: EndIf
If KeyDown(31) Then: MoveEntity user,0,0,-V# : walking=1: EndIf

If walking=1
a1#=(a1#+shoe_size) Mod 360
Else
EndIf
PositionEntity camera,Cos(a1#)*head_bang_X#,Sin(90+a1#*2)*head_bang_Y#,0,0
	
	MoveMouse GraphicsWidth()*0.5,GraphicsHeight()*0.5
	If Abs(EntityPitch#(camera))>u# RotateEntity camera,u#*Sgn(EntityPitch#(camera)),0,0
Здесь имитация реальных шагов, ато игрок движется как - то некрасиво, прямолинейно. (меняем обычное перемещение игрока на представленное)
Да и добавил вот код собирания бонусов, но чет не работает вроде все просто и правильно ПОСМОТРИТЕ ПОЖАЛСТА
Const  TypeBonus=6

Global Bonus=CreateCylinder()
EntityType Bonus,TypeBonus
PositionEntity Bonus,0,5,0

Function update_user()
If EntityCollided (user,TypeBonus) Then 
PositionEntity Bonus,Rnd(-40,40),0,Rnd(-40,40)
 user_H=user_H+20
Function create_world()
Collisions USERT,TypeBonus,2,2
(Offline)
 
Ответить с цитированием
Старый 21.09.2007, 01:16   #3
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Re: Создаём свой FPS (first person shooter)

user точно глобальная переменная?
(Offline)
 
Ответить с цитированием
Старый 21.09.2007, 01:19   #4
AndruXa
Знающий
 
Регистрация: 10.09.2007
Сообщений: 262
Написано 6 полезных сообщений
(для 8 пользователей)
Re: Создаём свой FPS (first person shooter)

Global user
Насколько я вижу, да!
Bonus перемещается при столкновении, тока вот жизни от этого не прибавляется....
(Offline)
 
Ответить с цитированием
Старый 21.09.2007, 02:52   #5
Crayzi
ПроЭктировщик
 
Регистрация: 26.06.2007
Сообщений: 194
Написано 21 полезных сообщений
(для 25 пользователей)
Смех Re: Создаём свой FPS (first person shooter)

Чёто мне ненравится в динамике после того что я поменял... я вот заметил, вернул я кусок той функции что отвечала за гравитацию, и лучше стает, но вот в чем проблемма, незнаю как отделатся от той гравитации на какой основан плавный прыжок, и получается что вроде и прыгаеш плавно, но невысоко и быстро падаеш, думал там гравитацию снизить так там приколы начинаются, ща буду думу думать

Во, чтото получилось, щас буду выкладывать и расписывать. (кстати, чёто незаметил никакого эффекта от первого андрюхиного кода, ща буду думать мож я де напортачил).

Возвращается переделанный кусок кода какой я когдато удалял (вставлять в Function update_user() прям педер концом (перед End Function)):
 
pick_ent=LinePick(EntityX(user,1),EntityY(user,1),EntityZ(user,1),0,-3.6,0)
TranslateEntity user,0,user_vy#,0,True
If pick_ent
jumping=0
Else
jumping=1
user_vy#=user_vy#-G#*delta_t
EndIf
так же единовременно изменить то что было в "While Not KeyHit(1)=1", короче все что там было добавлено на:
 
If jumping=0
If KeyDown(57) Then user_vy#=jumpvel# jumping=1
EndIf
If jumping=1
user_vy#=user_vy#-gravity#
by#=by#+user_vy#
EndIf
If by#<1 Then jumping=0
(Offline)
 
Ответить с цитированием
Старый 21.09.2007, 04:10   #6
Crayzi
ПроЭктировщик
 
Регистрация: 26.06.2007
Сообщений: 194
Написано 21 полезных сообщений
(для 25 пользователей)
Re: Создаём свой FPS (first person shooter)

Долго разбирался что к чему, но всеже разобрался, бывает изза 1 ошибочки непримечательной пробуеш и так и сяк а нечё невыходит, ладно короче, я добавил задержку между выстрелами, теперь к
shot_S(0)\sprite=LoadSprite("sprite0.bmp")
HideEntity shot_S(0)\sprite
shot_S(0)\damage=45
shot_S(0)\max_dist=100
shot_S(0)\v=0.3
shot_S(0)\reload_time=2000
shot_S(0)\InCartridge=6
shot_S(0)\max=30
добавляем
shot_S(0)\shoot_delay=750
а к
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.5
shot_S(1)\reload_time=1000
shot_S(1)\InCartridge=15
shot_S(1)\max=240
добавляем
shot_S(1)\shoot_delay=250
ну и если у кого есть
shot_S(2)\sprite=LoadSprite("sprite1.bmp")
HideEntity shot_S(2)\sprite
shot_S(2)\damage=100
shot_S(2)\max_dist=100
shot_S(2)\v=0.08
shot_S(2)\reload_time=4000
shot_S(2)\InCartridge=2
shot_S(2)\max=20
добавляем
shot_S(2)\shoot_delay=1000
Такс, далее в "Type SHOT_TYPE" добавляем еще 1 тип
Field shoot_delay
в "Type inventar" добавим 2 строчки(тоже типы походу):
 Field shoot_delay_flag
Field last_shoot
далее, далее, далее добавим в функции "Function update_user()" в строку:
If MouseHit(1) And user_inv\InC[user_inv\current]<>0 And user_inv\reload_flag=False
еще одно условие: And user_inv\shoot_delay_flag=False
вытоге оно станет смотрется примерно так(я у себя условия местами перекрутил ):
If MouseHit(1) And user_inv\InC[user_inv\current]<>0 And user_inv\shoot_delay_flag=False And user_inv\reload_flag=False
такс, далее добавим сразу 2 строки действий
user_inv\shoot_delay_flag=True
user_inv\last_shoot=MilliSecs()
вытоге эта If-ка станет сморется так:
 If MouseHit(1) And user_inv\InC[user_inv\current]<>0 And user_inv\shoot_delay_flag=False And user_inv\reload_flag=False
    user_inv\shoot_delay_flag=True
    user_inv\last_shoot=MilliSecs()
  user_gun=FindChild(GUN,"END")
  create_shot(EntityX(user_gun,1),EntityY(user_gun,1),EntityZ(user_gun,1),EntityPitch(camera),EntityYaw(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])
  ;
  If user_inv\current=0
   MoveEntity user,0,0,-1
  EndIf
 EndIf
сразу же после этого добавляем:
If MilliSecs()-user_inv\last_shoot>shot_S(user_inv\current)\shoot_delay And user_inv\shoot_delay_flag=True
user_inv\shoot_delay_flag=False
EndIf
вроде нечё незабыл, но на всяк пожарный выложу все свои переделки, мало ли что я там напутал.
Ща попробую бонусы прикрутить, мож что сам намучу
(Offline)
 
Ответить с цитированием
Старый 21.09.2007, 04:38   #7
Crayzi
ПроЭктировщик
 
Регистрация: 26.06.2007
Сообщений: 194
Написано 21 полезных сообщений
(для 25 пользователей)
Re: Создаём свой FPS (first person shooter)

Сообщение от AndruXa
Да и добавил вот код собирания бонусов, но чет не работает вроде все просто и правильно ПОСМОТРИТЕ ПОЖАЛСТА
Const  TypeBonus=6
 
Global Bonus=CreateCylinder()
EntityType Bonus,TypeBonus
PositionEntity Bonus,0,5,0
 
Function update_user()
If EntityCollided (user,TypeBonus) Then 
PositionEntity Bonus,Rnd(-40,40),0,Rnd(-40,40)
 user_H=user_H+20
Function create_world()
Collisions USERT,TypeBonus,2,2
Я вроде впихнул код и у меня когда начинают тратится жизни и я беру бонус то жизни пополняются. Сейчас сделаю чтоб циферки жизней было всегда видно на полоске жизней.
Добавь в "While Not KeyHit(1)=1" после "RenderWorld()" вот это и будеш видеть сколько у тебя НР в единицах.
Color 255,215,0
Text 65,30,"HP : "+user_H,True,True
(Offline)
 
Ответить с цитированием
Старый 21.09.2007, 04:41   #8
Crayzi
ПроЭктировщик
 
Регистрация: 26.06.2007
Сообщений: 194
Написано 21 полезных сообщений
(для 25 пользователей)
Re: Создаём свой FPS (first person shooter)

Сообщение от Crystal
А я бы на вашем месте работу товарища имперсоналиса не трогал.
Он же вас не просил переделывать его работу.
Если такие умные напишите свой фпс тутор.
А лучше не фпс тутор, а какойнить другой ибо хватает этого тутора.
Ок, буду чёнить другое мутить... просто только начал понимать что к чему и нетерпелось сделать то что мне было дело непонравилось...
(Offline)
 
Ответить с цитированием
Старый 21.09.2007, 16:53   #9
AndruXa
Знающий
 
Регистрация: 10.09.2007
Сообщений: 262
Написано 6 полезных сообщений
(для 8 пользователей)
Аналогично, я только учусь, позтому одной из основных стадий моего обучения было научиться разбираться в чужих кодах и уметь их редактировать. А с шагами реально лучше вам не кажется..........?
Да и бонус не помешал - бы

For Crayzi: А после чего ты вставил
If EntityCollided (user,TypeBonus) Then
PositionEntity Bonus,Rnd(-40,40),0,Rnd(-40,40)
user_H=user_H+20
В функции
уменя стоит в самом конце, может изза этого
А тот счетчик, даже, если я ничего не делаю, сам по себе растет огроменными темпами.
Кстати у тебя увеличивается только цыфры, или полоска тоже?
(Offline)
 
Ответить с цитированием
Старый 22.09.2007, 02:35   #10
Crayzi
ПроЭктировщик
 
Регистрация: 26.06.2007
Сообщений: 194
Написано 21 полезных сообщений
(для 25 пользователей)
Re: Мод FPS от impersonalis-a.

Сообщение от AndruXa
Аналогично, я только учусь, позтому одной из основных стадий моего обучения было научиться разбираться в чужих кодах и уметь их редактировать. А с шагами реально лучше вам не кажется..........?
Да и бонус не помешал - бы

For Crayzi: А после чего ты вставил
В функции
уменя стоит в самом конце, может изза этого
А тот счетчик, даже, если я ничего не делаю, сам по себе растет огроменными темпами.
Кстати у тебя увеличивается только цыфры, или полоска тоже?
If EntityCollided (user,TypeBonus) Then 
PositionEntity Bonus,Rnd(-40,40),0,Rnd(-40,40)
user_H=user_H+20
я выставил в самом конце перед "End Function", насчет "счётчика" я те вот что скажу, я заметил такую фишку что когда жизни полные и ты береш бонус, то полоска не растет а жизней добавляется соответственно 20, если жизней больше 100, то при получении урона полоска остается полной, если жизней мало и ты взял бонус (или несколько бонусов) то полоска обновится только после выстрела бота. Да и неплохо бы добавить сразу после циферок НР еще и циферки сколько брони, чтобы потом легче было разобратся с бонусами для брони (хотя что там разбиратся, все делается по аналогии)
 Text 190,30,"H0 : "+user_H0,True,True
И вообще, поменяй
 
Global Bonus=CreateCylinder()
EntityType Bonus,TypeBonus
PositionEntity Bonus,0,5,0
на
Global Bonus=CreateSphere()
ScaleEntity Bonus,0.2,0.4,0.2
texBonus=LoadTexture(".\pricel.bmp")
EntityTexture Bonus,texBonus
EntityType Bonus,TypeBonus
PositionEntity Bonus,Rnd(-40,40),2,Rnd(-40,40)
Так прикольнее будет. И поменяй позицию по Y после перестановки бонуса, ато у тебя выставлено что вначале он находится на высоте 5(я выстави на высоте 2), а потом на нуле, и вытоге он наполовину закопан в землю и его тяжело найти.

Вот думаю как бы сделать чтобы полоски с жизнями было видно над ботами... Покачто единственное чего я смог добится, это полоски над ботами зависящие от макс. количества их жизней, а далее пока что думаю, но решения ненаблюдаю, вот что сделал
добавил
Global bot_HP_line=LoadSprite("H.bmp")
потом в "Function create_bot(x#,y#,z#)" сразу после кода создания ориентира (Orient)добавил
 B_HP_Line=CopyEntity(bot_HP_line)
 TurnEntity B_HP_Line,90,0,0
 EntityParent B_HP_Line,b\entity
 PositionEntity B_HP_Line,0,1.5,0
 ScaleSprite B_HP_Line,b\Survivability*0.01,0.1
так же в функцию "Function create_world()" добавил
HideEntity bot_HP_line
ScaleSprite bot_HP_line,0.8,0.1
Подскажите как привязать полоски с жизнями к текущему кол-ву НР ботов.
(Offline)
 
Ответить с цитированием
Старый 22.09.2007, 10:56   #11
Horror
Бывалый
 
Регистрация: 09.09.2006
Сообщений: 656
Написано 54 полезных сообщений
(для 110 пользователей)
Re: Мод FPS от impersonalis-a.

на мой взгляд игре не помешалбы улучшение графики
типо моделек анимированных
и текст покруче
(Offline)
 
Ответить с цитированием
Старый 22.09.2007, 12:24   #12
H@NON
Дэвелопер
 
Регистрация: 17.01.2007
Сообщений: 1,552
Написано 351 полезных сообщений
(для 774 пользователей)
Re: Мод FPS от impersonalis-a.

Рано, еще рано за графикку браться. Сперва геймплей. Вот напишешь движок , там дальше и за моделлинг( или как там это называется - создание 3д моделей=)) ) можно браться. Глядишь и игра новая появиться!. Так что сначало руку набей для программирования...
(Offline)
 
Ответить с цитированием
Старый 22.09.2007, 15:56   #13
AndruXa
Знающий
 
Регистрация: 10.09.2007
Сообщений: 262
Написано 6 полезных сообщений
(для 8 пользователей)
Re: Мод FPS от impersonalis-a.

Crayzi, эту "фишку" легко исправить смотри страницу 2 этой темы!!!!! 1 сообщение
А все эти изменения предложенные тобой, оно конечно смотрится прикольно, но они лишь косметические
И как сказал H@NON
Рано, еще рано за графикку браться. Сперва геймплей.
А потом можно что ниль и получше сферы с текстурой в максе сварганить А пока движок и устранение багов............
(Offline)
 
Ответить с цитированием
Старый 22.09.2007, 16:01   #14
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Re: Мод FPS от impersonalis-a.

If user_H >=100 then user_H<=100
это ещё круче твоего предыдущего
if visota1=0 then visota1=0
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Старый 22.09.2007, 16:02   #15
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Re: Мод FPS от impersonalis-a.

Подскажите как привязать полоски с жизнями к текущему кол-ву НР ботов.
не совсем понял вопрос.
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
impersonalis HolyDel Поздравления и пожелания 33 16.03.2009 16:55
impersonalis Magus Поздравления и пожелания 27 15.03.2007 17:32
Impersonalis Witchy Woman Поздравления и пожелания 16 16.03.2006 17:11


Часовой пояс GMT +4, время: 10:31.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com