HLFX.Ru Forum
профиль •  правила •  регистрация •  календарь •  народ •  FAQ •  поиск •  новое •  сутки •  главная •  выход  
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > Half-Life SDK > Несколько вопросов о Player Movement (pm_shared)
pm_shared
Страницы (3): [1] 2 3 »   Предыдущая тема   Следующая тема
Автор
Тема Новая тема    Ответить
NarutoUA
Частый гость

Дата регистрации: Jan 2012
Проживает: (void)
Сообщений: 30

Рейтинг



Question Несколько вопросов о Player Movement (pm_shared)

Решил полностью перенести поведение персонажа (скорость бега, гравитация, стрейфы и т.д) из голдсорса(а именно сделать таким же, как в кс) на другой движок для создания небольшой игры клона-убийцы контр-страйка прыгалки-скакалки. Насколько я понял, основной код лежит в папочке pm_shared, а то, что мне нужно, в файле pm_shared.c /

Тут у меня есть несколько вопросов:
1) - pm_friction - трение с землей? тоесть, сколько юнитов еще проделает мой персонаж после того, как я отпущу кнопку вперед/вбок?
2) - pm_accelerate - движение по земле? а pm_airaccelerate в функции pm_airmove - движение по воздуху?
3) - вызов функции PM_FlyMove(); в PM_AirMove - что это?
4) pm_debug.c - что и зачем это?

Сообщить модератору | | IP: Записан
Сообщение: 138198

Старое сообщение 27-05-2014 16:02
- За что?
ILZM
LAW

Дата регистрации: Oct 2011
Проживает: Mega City One
Сообщений: 301

Рейтинг



1) Да, если, например, оно будет маленьким, то игрок будет скользить как по льду. Это было на одной из HL Opposing Force карт.

2) Да, оно вызывается при движении по земле. И другие аналогично.

3) PM_FlyMove() это тип движения, а PM_AirMove это типо состояние, когда игрок прыгнул. Ещё PM_FlyMove() вызывается, когда игрок плавает (PM_WaterMove()).

4) Не знаю)

Сообщить модератору | | IP: Записан
Сообщение: 138201

Старое сообщение 27-05-2014 18:07
- За что?
NarutoUA
Частый гость

Дата регистрации: Jan 2012
Проживает: (void)
Сообщений: 30

Рейтинг



ILZM
3) PM_AirMove, я так понял, применяется в главной функции PM_PlayerMove движение при проверке, когда тело не на земле, тоесть в воздухе, то тогда работает PM_AirAccelerate, а когда игрок на земле - PM_WalkMove и просто PM_Accelerate + PM_Friction.

Если я правильно понимаю, то этот код из PM_PlayerMove отвечает только за движения по земле, трение и движение по воздуху, и переписав это (ну и используемые функции) я получу более-менее движение как в кс/хл(без учета переменных, там ведь для каждой игры свои значения кваров), только без лестниц, воды, и хотьбы сидя:

code:
if ( pmove->onground != -1 ) { pmove->velocity[2] = 0.0; PM_Friction(); } // Make sure velocity is valid. PM_CheckVelocity(); // Are we on ground now if ( pmove->onground != -1 ) { PM_WalkMove(); } else { PM_AirMove(); // Take into account movement when in air. }

Сообщить модератору | | IP: Записан
Сообщение: 138203

Старое сообщение 27-05-2014 18:31
- За что?
ILZM
LAW

Дата регистрации: Oct 2011
Проживает: Mega City One
Сообщений: 301

Рейтинг



NarutoUA,да. Но не нужно забывать про просчитывание столкновений и клиентскую часть в input.cpp (может и не только).

Сообщить модератору | | IP: Записан
Сообщение: 138205

Старое сообщение 27-05-2014 18:41
- За что?
NarutoUA
Частый гость

Дата регистрации: Jan 2012
Проживает: (void)
Сообщений: 30

Рейтинг



В функции PM_Accelerate есть строка:

code:
accelspeed = accel * pmove->frametime * wishspeed * pmove->friction;


Меня вот интересует этот указатель pmove->friction что это?
Это указатель на эту структуру

code:
typedef struct playermove_s { ... ... float gravity; // Our current gravity and friction. float friction; ... ... }

Сообщить модератору | | IP: Записан
Сообщение: 138207

Старое сообщение 27-05-2014 19:23
- За что?
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 34527
Нанёс повреждений: 514 ед.
Возраст: 37

Рейтинг



Награды
 
[1 награда]


NarutoUA
Эта структура - параметры физики игрока, которые шарятся между сервером и клиентом в целях предиктинга.

__________________

Сообщить модератору | | IP: Записан
Сообщение: 138208

Старое сообщение 27-05-2014 20:18
-
NarutoUA
Частый гость

Дата регистрации: Jan 2012
Проживает: (void)
Сообщений: 30

Рейтинг



Никак не могу разобраться в векторах.
В ф-ции PM_AddGravity () есть строка:

code:
// Add gravity incorrectly pmove->velocity[2] -= (ent_gravity * pmove->movevars->gravity * pmove->frametime );


pmove->velocity - вектор, тоесть массив из 3х чисел - x,y,z. Но вот цифра 2 - это разве не ось Z, тогда почему гравитация действует на эту ось, а не на ось Y? Или в хлсдк вектор это (x,z,y) а не (x,y,z)?

Сообщить модератору | | IP: Записан
Сообщение: 138223

Старое сообщение 28-05-2014 15:05
- За что?
Ku2zoff
Мастер Ёда из Деревни Дуракоф

Дата регистрации: Apr 2007
Проживает: В Деревне дураков
Сообщений: 6749
Возраст: 33

Рейтинг



0 - PITCH (наклон по вертикали вперёд-назад)
1 - YAW (поворот по горизонтали)
2 - ROLL (наклон по вертикали вправо-влево)

или

0 - x (вперёд)
1 - y (вправо)
2 - z (вверх)

В халфе ось Z вертикальная. ЕМНИП, термин такой фанатский есть, ни то "Мир по-Кармаку", ни то ещё "Что-то по-Кармаку". Именно из-за такой вот системы координат. Изначально были только X(вперёд) и Y(вправо). В дууме и вольфенштейне. А как дошло дело до первокваки (она трёхмерная), добавили вертикальную ось Z. Вот и весь секрет.
Я, кстати, до сих пор не обращаю на это внимания. Хотя, если вспомнить школьный курс геометрии, Кармак прав. Ведь плоскость, она горизонтальная. И двумерное пространство в халфе располагается правильно. В отличие от этих ваших 3д редакторов, где плоскость вертикальна.

Сообщить модератору | | IP: Записан
Сообщение: 138227

Старое сообщение 28-05-2014 17:39
- За что?
NarutoUA
Частый гость

Дата регистрации: Jan 2012
Проживает: (void)
Сообщений: 30

Рейтинг



Я то думаю, почему у меня персонаж ходит только влево-вправо да и прыгает как обезьяна, а тут вот оно что... А как реализована гравитация? Зависит от sv_gravity x, где х - юниты в секунду? Тоесть у меня обьект падает по такому вот закону?:

velocity.y-= sv_gravity * frametime

Сообщить модератору | | IP: Записан
Сообщение: 138228

Старое сообщение 28-05-2014 17:46
- За что?
Ku2zoff
Мастер Ёда из Деревни Дуракоф

Дата регистрации: Apr 2007
Проживает: В Деревне дураков
Сообщений: 6749
Возраст: 33

Рейтинг



Цитата:
NarutoUA писал:
velocity.y

Ну неправильно же. Надо velocity.z уменьшать, чтоб падал. А по velocity.y он у тебя влево двигаться будет.
Я вообще с этим не заморачивался. Как помнил, что ось Z это перпендикуляр к плоскости, так и писал код. А за плоскость брал горизонталь, параллельную земле. Соответственно, перпендикуляр вверх смотрит. Тут и гадать-то нечего, достаточно поглядеть обнуления velocity.z в pm_shared, в условиях, когда вертикальная скорость не должна учитываться.

Сообщить модератору | | IP: Записан
Сообщение: 138229

Старое сообщение 28-05-2014 17:55
- За что?
NarutoUA
Частый гость

Дата регистрации: Jan 2012
Проживает: (void)
Сообщений: 30

Рейтинг



Просто на движке unity , где я это пишу, ось Y это таки вверх

Сообщить модератору | | IP: Записан
Сообщение: 138230

Старое сообщение 28-05-2014 17:58
- За что?
fire64
Житель форума

Дата регистрации: Apr 2007
Проживает: Москва
Сообщений: 2362
Возраст: 33

Рейтинг



NarutoUA, ты переносишь физику игрока из HL в Unity?

__________________
Вся сила лысого кощея,
Сокрыта в башне из костей
Воздвигнутой, под небесами
На месте похорон людей

Сообщить модератору | | IP: Записан
Сообщение: 138231

Старое сообщение 28-05-2014 18:16
- За что?
NarutoUA
Частый гость

Дата регистрации: Jan 2012
Проживает: (void)
Сообщений: 30

Рейтинг



fire64
Да, увидел на ютубе видео с демкой на юнити, порт физики игрока с Q3 на Юнити, вроде неплохо получилось. Решил вот свой порт сделать, только с голдсорса.

Сообщить модератору | | IP: Записан
Сообщение: 138232

Старое сообщение 28-05-2014 18:28
- За что?
~ X ~
offline

Дата регистрации: Oct 2005
Проживает: Архангельск
Сообщений: 3619

Рейтинг



Награды
 
[1 награда]


Цитата:
Ku2zoff писал:
В халфе ось Z вертикальная.

Высшая математика аппрувит вертикальную ось З. Физика тоже. Кады тоже. И только автор быдлоредактора "Молочная Фигура 3Д" выпендрился и сделал У по вертикали. Возможно, школьник.
ЗЫ: А Кармаг - срамный кусок бревна, а не программер.

Цитата:
NarutoUA писал:
Просто на движке unity , где я это пишу, ось Y это таки вверх

Так, значит, не зря его здесь так нелюбят?

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]

Сообщить модератору | | IP: Записан
Сообщение: 138237

Старое сообщение 28-05-2014 19:58
- За что?
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 34527
Нанёс повреждений: 514 ед.
Возраст: 37

Рейтинг



Награды
 
[1 награда]


Цитата:
~ X ~ писал:
И только автор быдлоредактора "Молочная Фигура 3Д" выпендрился и сделал У по вертикали. Возможно, школьник.

Ну ты же в курсе, что по умолчанию и в д3д, и в опенгл вертикальная ось - У? Ты же в курсе, да?..

__________________

Сообщить модератору | | IP: Записан
Сообщение: 138238

Старое сообщение 28-05-2014 20:00
-
Тема: (Опционально)
Ваш ответ:



Переводчик транслита


[проверить длину сообщения]
Опции: Автоматическое формирование ссылок: автоматически добавлять [url] и [/url] вокруг интернет адресов.
Уведомление по E-Mail: отправить вам уведомление, если кто-то ответил в тему (только для зарегистрированных пользователей).
Отключить смайлики в сообщении: не преобразовывать текстовые смайлики в картинки.
Показать подпись: добавить вашу подпись в конец сообщения (только зарегистрированные пользователи могут иметь подписи).

Временная зона GMT. Текущее время 10:13. Новая тема    Ответить
Страницы (3): [1] 2 3 »   Предыдущая тема   Следующая тема
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > Half-Life SDK > Несколько вопросов о Player Movement (pm_shared)
pm_shared
Версия для печати | Отправить тему по E-Mail | Подписаться на эту тему

Быстрый переход:
Оцените эту тему:

Правила Форума:
Вы not можете создавать новые темы
Вы not можете отвечать в темы
Вы not можете прикреплять вложения
Вы not можете редактировать ваши сообщения
HTML Код ВЫКЛ
vB Код ВКЛ
Смайлики ВКЛ
[IMG] Код ВКЛ
 

< Обратная связь - HLFX.ru >

На основе vBulletin
Авторское право © 2000 - 2002, Jelsoft Enterprises Limited.
Дизайн и программирование: Crystice Softworks © 2005 - 2024