HLFX.Ru Forum
профиль •  правила •  регистрация •  календарь •  народ •  FAQ •  поиск •  новое •  сутки •  главная •  выход  
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > Half-Life SDK > (Help!) Сдвиг камеры при приземлении как в CS:GO
Для ксаш-мода, кодинг
Страницы (2): « 1 [2]   Предыдущая тема   Следующая тема
Автор
Тема Новая тема    Ответить
Aynekko
Маппер

Дата регистрации: Jun 2016
Проживает: г. Подольск, Россия
Сообщений: 1002
Возраст: 31

Рейтинг



Вот я и задал "pparams->onground"

Добавлено 17-08-2020 в 16:48:

Хых, оказывается vieworg это для моделей пушек. Сейчас вот такое:

C++ Source Code:
1
if( pparams->simvel[2] > 0 && !pparams->onground)
2
{
3
  landtime = pparams->time;
4
}
5
 
6
if (pparams->onground && pparams->time > landtime )
7
{
8
 
9
  delta = pparams->time - landtime;
10
  if ( delta < LAND_DEFLECT_TIME )
11
  {
12
    f = delta / LAND_DEFLECT_TIME;
13
    pparams->viewangles[2] += landChange * f;
14
  }
15
  else if ( delta < LAND_DEFLECT_TIME + LAND_RETURN_TIME )
16
  {
17
    delta -= LAND_DEFLECT_TIME;
18
    f = 1.0 - ( delta / LAND_RETURN_TIME );
19
    pparams->viewangles[2] += landChange * f;
20
  }
21
}
22
 
23
}

Поставил viewangles[2]. Теперь при приземлении экран начинает меееедленно скашиваться влево. При прыжке восстанавливается резко в исходное положение, при приземлении снова начинается медленный скос. Кажется, еще чуть и я решу эту задачку
Почему-то, если ставить simorg вместо viewangles - тогда вообще ничего не происходит.

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

Старое сообщение 17-08-2020 13:48
- За что?
Crystallize
Житель форума

Дата регистрации: Jul 2007
Проживает: Новосибирск
Сообщений: 4415
Возраст: 34

Рейтинг



Цитата:
Aynekko писал:
Хых, оказывается vieworg это для моделей пушек

vieworg это клиентская камера, она каждый кадр выравнивается по модельке игрока. Если я правильно помню, то клиентская пушка привязана не к камере, а к игроку. Ну в кваке так.

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

Старое сообщение 17-08-2020 14:56
- За что?
Aynekko
Маппер

Дата регистрации: Jun 2016
Проживает: г. Подольск, Россия
Сообщений: 1002
Возраст: 31

Рейтинг



Вот как. Блин. Когда стояло vieworg, пушка просто медленно уезжала вверх, в общем та же самая ситуация со скосом камеры вбок. Ничего не понимаю.

Добавлено 17-08-2020 в 20:37:

Оно заработало!
Только все равно есть баги, которые не могу понять, как отловить…помогите
Вот текущий рабочий код:

C++ Source Code:
1
void V_LandDip( struct ref_params_s *pparams)
2
{
3
#define LAND_DEFLECT_TIME 0.6 //150
4
#define LAND_RETURN_TIME 0.25 //300
5
  float delta;
6
  static float landtime;
7
  float f;
8
  float landChange;
9
 
10
  if( pparams->simvel[2] > 0 && !pparams->onground)
11
  {
12
    landtime = pparams->time;
13
  }
14
 
15
  if (pparams->onground && pparams->time > landtime )
16
  {
17
    landChange = -8;
18
    delta = pparams->time - landtime;
19
    if ( delta < LAND_DEFLECT_TIME )
20
    {
21
      f = delta / LAND_DEFLECT_TIME;
22
      pparams->simorg[2] += landChange * f;
23
    }
24
    else if ( delta < LAND_DEFLECT_TIME + LAND_RETURN_TIME )
25
    {
26
      delta -= LAND_DEFLECT_TIME;
27
      f = 1.0 - ( delta / LAND_RETURN_TIME );
28
      pparams->simorg[2] += landChange * f;
29
    }
30
  }
31
 
32
}


Что имею на выходе. При прыжке и приземлении, камера едет вниз и обратно - все как надо!
Проблемы:
- если спрыгивать с уступа - сдвига камеры нет.
- если запрыгнуть на высокий ящик с помощью (ctrl+space), то при приземлении на ящик камера съезжает гораздо сильнее, как будто я упал с бОльшей высоты. То есть по идее все должно быть наоборот.

Что я упустил? Я уже так близок к успеху

Добавлено 17-08-2020 в 20:40:

Если заметили, то Deflect и Return я задал совершенно другие значения. Если оставить 150 и 300, то камера будет ехать вниз минуты две и столько же обратно (да, я проверял…).
Где-то что-то не то. Предполагаю, что в simvel проблема где-то…может задал неправильно

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

Старое сообщение 17-08-2020 17:40
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32188
Нанёс повреждений: 392 ед.

Рейтинг



Цитата:
Aynekko писал:
А как определять, когда он в воздухе, а когда нет?

C++ Source Code:
if( pparams->onground == -1 )
{
}


Цитата:
Aynekko писал:
результата опять же нет

так результат откуда возьмется, если ты совершаешь хаотичные действия?

Добавлено 17-08-2020 в 21:24:

C++ Source Code:
1
void V_LandDip( struct ref_params_s *pparams)
2
{
3
#define LAND_DEFLECT_TIME 0.6 //150
4
#define LAND_RETURN_TIME 0.25 //300
5
  float delta;
6
  static float landtime;
7
  float f;
8
  float landChange;
9
 
10
  if( pparams->onground == -1 )
11
  {
12
    landtime = pparams->time;
13
  }
14
  else
15
  {
16
    landChange = -8;
17
    delta = pparams->time - landtime;
18
    if ( delta < LAND_DEFLECT_TIME )
19
    {
20
      f = delta / LAND_DEFLECT_TIME;
21
      pparams->simorg[2] += landChange * f;
22
    }
23
    else if ( delta < LAND_DEFLECT_TIME + LAND_RETURN_TIME )
24
    {
25
      delta -= LAND_DEFLECT_TIME;
26
      f = 1.0 - ( delta / LAND_RETURN_TIME );
27
      pparams->simorg[2] += landChange * f;
28
    }
29
  }
30
 
31
}

Так попробуй, но я не проверял.

Добавлено 17-08-2020 в 21:26:

Цитата:
Aynekko писал:
Если заметили, то Deflect и Return я задал совершенно другие значения

в ку3 это милисекунды, в халфе - доли секунды. 150 это 0.15, 300 это 0.3

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

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

Старое сообщение 17-08-2020 18:26
-
Aynekko
Маппер

Дата регистрации: Jun 2016
Проживает: г. Подольск, Россия
Сообщений: 1002
Возраст: 31

Рейтинг



Цитата:
Дядя Миша писал:
так результат откуда возьмется, если ты совершаешь хаотичные действия?

Да, я в курсе. Я просто констатировал факт моих экспериментов.
Цитата:
Дядя Миша писал:
Так попробуй, но я не проверял.

Спасибо большое за помощь. В принципе то же самое, что и результат в посте перед твоим, только
Цитата:
pparams->onground == -1

не работает, зато работает !pparams->onground. Но ведь это же одно и то же по сути… О.о

Осталась одна вещь. При падении даже с браша высотой один юнит, камера все равно проигрывается. Выше через пост я там поставил условие pparams->simvel[2] > 0, я там ставил еще > 50. Тогда камера дергается в полете.
Как бы так сделать, чтобы камера проигрывалась только тогда, когда скорость приземления превысила заданную. На сервере было простое условие pmove->flFallVelocity >= 50 или вроде того.

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

Старое сообщение 17-08-2020 18:52
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32188
Нанёс повреждений: 392 ед.

Рейтинг



Цитата:
Aynekko писал:
зато работает !pparams->onground

Код из Ксаша:
C++ Source Code:
fd->onground = (cl.local.onground != -1);

Пля, я был уверен, что там именно номер энтити. Забыл уже.

Цитата:
Aynekko писал:
когда скорость приземления превысила заданную

simvel[2] < -XXX

попробуй там через gEngfuncs.Con_Printf посмотреть значения при падении с разной высоты. И подбери по вкусу.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

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

Старое сообщение 17-08-2020 20:47
-
Aynekko
Маппер

Дата регистрации: Jun 2016
Проживает: г. Подольск, Россия
Сообщений: 1002
Возраст: 31

Рейтинг



Дядя Миша спасибо! Но, в принципе, пошаманил с циферками и можно даже и без проверки по велосити обойтись, эффект совсем ненавязчивый получился, зато интерактивности добавил будь здоров (имхо конечно). Еще и на оружие сделал. Красота.
Кстати из ксго тоже попробовал код, т.к. теперь я уже разобрался более-менее с этими временными метками и по подобию сделать оказалось не трудно.

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

Старое сообщение 17-08-2020 21:03
- За что?
Тема: (Опционально)
Ваш ответ:



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


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

Временная зона GMT. Текущее время 21:33. Новая тема    Ответить
Страницы (2): « 1 [2]   Предыдущая тема   Следующая тема
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > Half-Life SDK > (Help!) Сдвиг камеры при приземлении как в CS:GO
Для ксаш-мода, кодинг
Версия для печати | Отправить тему по E-Mail | Подписаться на эту тему

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

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

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

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