forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   3D-программирование (http://forum.boolean.name/forumdisplay.php?f=12)
-   -   Вопрос по FPS (http://forum.boolean.name/showthread.php?t=206)

Dizels 15.10.2005 19:10

Вложений: 2
Вот код, без ботов, я смотрел, вроде все правильно, а стрелять не хочет:(
Хэлп

AnRee 15.10.2005 19:49

Ты почему в архив ресурсы не кладешь? :(

Dizels 15.10.2005 19:53

много весят, а у меня траффика почти не осталось, а до 29 надо как то общаться!:)А без них(ресурсов)никак?Там же вроде в коде ошибка какая-то, ведь так все нормально, и бегаю и все как надо!

AnRee 15.10.2005 20:06

Все дело в том что ты в обновлении пули не указал глобальную переменную gtmax_dist#

сделай в начале
Global gtmax_dist#=1000
и все!
:)

Dizels 15.10.2005 20:27

Спасибо!

Dizels 15.10.2005 23:29

Тогда вопрос на эту же тему, может я очень не внимателен, но такой строчки(Global gtmax_dist#=1000)у Impersonalis'a в коде не нашел!Покрайней мере на той стадии, на которой сейчас находиться мой код, так вот, почему у него работает а у меня нет(просто пытаюсь разобраться где я не внимательно код читаю!)
И еще:
If Abs(EntityPitch#(camera))>u# RotateEntity camera,u#*Sgn(EntityPitch#(camera)),0,0

Как эту строчку на русском прочитать?Я в смысле что она делает?Поподробнее можно?

impersonalis 15.10.2005 23:36

Код:

If Abs(EntityPitch#(camera))>u# RotateEntity camera,u#*Sgn(EntityPitch#(camera)),0,0
Если (Отклонение камеры вверх-вниз) больше допустимого, то установить камеру на предельно допустимое отклонение:
вверх - если какмера до предела отклонена вверх
вниз - -//- вниз

модуль нам нужен для объединения условий
Отклонение камеры вверх
Отклонение камеры вниз
а SGN (функция-знак) для того, чтобы корректно потом это обработать:
если отклонение вниз, т.е. угол больше нуля, то разворачиваем камеру на (предельное отклонения) * 1, иначе (камера вверх, угол меньше нуля) - разворачиваем камеру на (предельное отклонения) * (-1)

Dizels 01.11.2005 17:46

Возник еще один вопросик: вот у меня на уровне есть лестница, чтобы к ней прибежать, надо пройти сквозь дверной косяк.Так вот, через косяк не проходит,но это ладно, проблема решаемая, прыгнул и пошел дальше, а вот что делать с лестницей?Каков должен быть код, чтобы герой нормально по ней поднимался?Я даже в теории понять не могу, как он себя вести должен, не говоря уже о практическом написании кода. Так что вот такие дела. Помогите кто чем может :) :)

KRIK 01.11.2005 18:33

Да всё дело в колизиях. Посмотри в хелпе про это (или что-то на подобе), там должно быть.

jimon 01.11.2005 19:25

в теории - ориентир ето звук , надо проверять прикосновение к леснице, если оно есть... то вырубаем гравитацию :) и делаем движение игрока по вектору камеры (по направлению) плюс к етому надо еще чучуть приталкивать игрока к леснице, если всеже столкновение игрока и лесницы ищезло - возвращаем управление и гравитацию обратно

ps. все просто :)

Dizels 02.11.2005 01:32

Интересно у меня лестница и сам зал - грузяться как один объект, и как я Блитцу объясню, что я натолкнулся на лестнуцу а не на стенку, а то получаеться, если я Вас правильно понял то как только происходит столкновение убирать гравитацию, тогда я со стеной очень интересно сталкиваться буду:)
Теперь по поводу вектора камеры, а можно поподробнее(формулу что-ль какую)а еще лучше набросок в Блитц

jimon 02.11.2005 16:30

я ето образно сказал - если у тебя отключить гравитацию то игрок сможет летать ? если да - то тогда надо будет только отключать гравитацию
если нет - то будет трабла :)

и лесницу надо отделять от основной модели левела
или грузить loadanimmesh ето к левелу - и там выделять лесницу

Dizels 03.11.2005 14:31

А иначе никак? Ведь к примеру был бы у меня крутой подъем, так что мне его тоже отдельно грузить пришлосьбы? - Врядли

jimon 03.11.2005 18:39

я предложил как в некоторых играх видел

сам я парентил игрока к леснице (вдруг лесница на поезде или чет другое)
и изменял оси движения :)

Dizels 04.11.2005 00:13

А подробнее, желательно применительно к моему коду?

jimon 04.11.2005 16:36

я толком неразбирался...

короче если с лесницой столкнулись то меняеш ето
Код:

If KeyDown(17)=1 Then MoveEntity Selin,0,0,+V#
If KeyDown(31)=1 Then MoveEntity Selin,0,0,-V#

на ето
Код:

If KeyDown(17)=1 Then MoveEntity Selin,0,+V#,0
If KeyDown(31)=1 Then MoveEntity Selin,0,-V#,0

и убираеш вот ето
Код:

TranslateEntity Selin,0,-G#,0
как только от лесницы от сойденились - все возращаем обратно :)

ZanoZa 12.01.2006 22:11

скромный вопрос : как "присобачить" оружие?

jimon 12.01.2006 23:25

Код:

entityparent camera,weapon
так помойму... или наоборот - попробуй

alcosholik 13.01.2006 20:52

Цитата:

EntityParent entity, parent[, global]

Parameters
entity - entity handle
parent - parent entity handle
global (optional) - true for the child entity to retain its global position and orientation. Defaults to true. *

Description
Attaches an entity to a parent.

Parent may be 0, in which case the entity will have no parent. *

Вместо parent пишешь имя камеры.

ZanoZa 13.01.2006 23:28

Я это знал тока чё глюкнул и поставил не в главный цикл.:rolleyes:
Подскожите как можно сделать чтобы стрелба была как у дробовика, а не как у УЗИ?(т.е. с промежутком времени)

alcosholik 14.01.2006 10:12

Код Платона:
Цитата:

Так если у тебя есть тип оружия - добавь туда поле скорострельность, а потом когда вызываешь функцию выстрела - вызывай ее по таймеру, параметром которого будет скорострельность.
Код:


Type Weapon
 * * * field firerate
 * * *;...
end type
 
access_shoot=true
;....
 
if down_key_shoot and access_shoot then
 * * Shot()
 * * access_shoot=false
end if
 * * access_shoot=GetTime(CurrWeapon\firerate)
 
;...
; Это таймер
 
Global orig,out
Function GetTime(firerate)
 If Not out>=(600/firerate) Then
 *out=MilliSecs()-orig
 Else
 *orig=MilliSecs()
 *out=0
 *Return True
 End If
 Return False
End Function



Gnom 09.03.2006 00:17

Возвращаясь к вопросу о лестницах- обычно делается проверка высоты препядствия. Если высота препядствия меньше заданной в коде максимальной высоты ступени, то происходит проверка вверх на рост игрока, чтобы не было других препядствий подъему на препядствие. Если все чисто игрок поднимается на препядствие.
(в теории так работают ФПС-движки)

jimon 09.03.2006 19:43

Gnom
собственно да, ето основы работы физики куклы героев в фпс
но тут надо попроще :) чтобы всем понятно было

Guest 26.04.2006 11:20

По поводу лестницы:
можно определить местонахождение игрока
EntityX(user),EntityY(user),EntityZ(user) и в соответствии с этим менять условия гравитации.

Sony 30.06.2006 03:31

Сам когдато мучался с этим.Только я не понял лестница какая?Вертикальная или ступенцитая=))
Короче вот код для ступенчитой (нашол на какомто форуме))
Код:

height#=EntityY#(player)-PickedY#()
If height#<1.9 MoveEntity player,0,0.1,0
If height#>2.1 MoveEntity player,0,-0.1,0
If LinePick (EntityX (player),EntityY (player),EntityZ (player),0,-10,0,1)=0 MoveEntity player,0,-0.5,0



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

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot