Форумы на Наша-Life
Home user CP  
Календарь событий Найти других пользователей Часто задаваемые Вопросы Поиск  
Автор
Тема
Создать Новую Тему    Ответить
Breever
(Добываю фероподы из мирмидонта)

Зарегистрирован: Jun 2009
Проживает: Россия/Красноярск
Написал: 95 сообщений

Оценка: 3 Votes 3 чел.

Реалистичное оружие
Сообщение #996568
Стараюсь делать оружие максимально реалистичным, со всеми характеристиками проблем нет, но охота сделать одну штуку.

В моде Resistance & Liberation очень нравится как ведет себя оружие - на экране есть зона (пару градусов) в которой можно двигать пушку, при этом поворота камеры не происходит, а сама пушка просто "ходит" по экрану. При выходе за эту зону происходит уже поворот камеры.
См. вот это видео, уже в самом начале видно.
https://www.youtube.com/watch?v=ghNY7Xa4pRU


Так вот, как думаете, как можно это реализовать? Пара идей есть, но я что-то сомневаюсь.
Не существует границ, есть лишь препятствия
Old Post 09-11-2010 15:57
Breever отсутствует Посмотреть данные 'Breever' Отправить Приватное Сообщение для 'Breever' Посетить домашнюю страничку Breever Найти другие сообщения 'Breever' Добавить Breever в Список Друзей
Править/Удалить Сообщение Ответить с Цитированием
manJak
(маппер-теоретик)

Зарегистрирован: Feb 2006
Проживает: Mother Russia/Moscow
Написал: 2953 сообщений

Оценка: 66 Votes 66 чел.

Developer Старожил 
Сообщение #996629
По-разному, наверное, можно сделать.. По крайней мере я делал, переопределяя void C_BaseCombatWeapon::OverrideMouseInput(float *dx, float *dy). Это будет примерно так:
code:{
....C_BasePlayer *p = ToBasePlayer(GetOwner());
....if ( !p )
........return;

....float ratio = engine->GetScreenAspectRatio();
....float fov_h = p->GetFOV();
....float fov_v = RAD2DEG( atan( tan(DEG2RAD(fov_h)/2)/ratio ) * 2 );

....static const ConVarRef m_yaw( "m_yaw" );
....static const ConVarRef m_pitch( "m_pitch" );

....float dyaw = m_yaw.GetFloat() * *dx * -0.5;
....float dpitch = m_pitch.GetFloat() * *dy * +0.5;
....m_flViewmodelYaw += dyaw;
....m_flViewmodelPitch += dpitch;

....float maxYaw = fov_h*0.5 * weapon_maxyaw.GetFloat();
....float maxPitch = fov_v*0.5 * weapon_maxpitch.GetFloat();

....if ( m_flViewmodelYaw > -maxYaw && m_flViewmodelYaw < maxYaw )
........*dx = 0;
....else
........m_flViewmodelYaw = clamp( m_flViewmodelYaw, -maxYaw, maxYaw );

....if ( m_flViewmodelPitch > -maxPitch && m_flViewmodelPitch < maxPitch )
........*dy = 0;
....else
........m_flViewmodelPitch = clamp( m_flViewmodelPitch, -maxPitch, maxPitch );
}
m_flViewmodelYaw и m_flViewmodelPitch - члены класса твоего оружия, которые надо прибавлять к углам вьюмодели. Например в AddViewmodelBob.

Ну и не надо забывать отправлять на сервер эти углы (см. CUserCmd), чтобы там стрелялось нормально.
Old Post 09-11-2010 21:17
manJak отсутствует Посмотреть данные 'manJak' Отправить Приватное Сообщение для 'manJak' Найти другие сообщения 'manJak' Добавить manJak в Список Друзей
Править/Удалить Сообщение Ответить с Цитированием
Breever
(Добываю фероподы из мирмидонта)

Зарегистрирован: Jun 2009
Проживает: Россия/Красноярск
Написал: 95 сообщений

Оценка: 3 Votes 3 чел.

Сообщение #996763
Спасибо большое, все работает, причем так красиво! Прям как и хотел.
Осталось только с прицелом и отправкой углов на сервер покрутиться. Ну это уж вроде известные задачи, реализую
Не существует границ, есть лишь препятствия
Old Post 10-11-2010 16:47
Breever отсутствует Посмотреть данные 'Breever' Отправить Приватное Сообщение для 'Breever' Посетить домашнюю страничку Breever Найти другие сообщения 'Breever' Добавить Breever в Список Друзей
Править/Удалить Сообщение Ответить с Цитированием
Все время в GMT . Сейчас 18:20.
Создать Новую Тему    Ответить

Быстрый ответ
Ваше Имя:
Хотите Зарегистрироваться?
Ваш Пароль:
Забыли свой Пароль?
Вы можете оставлять свои комментарии анонимно, просто введя свои имя и оставив пустым поле пароля.
Ваш ответ:

[проверить размер]
[транслит в win] | [?]
[русская клавиатура]

Дополнительно: Подтверждение по E-Mail


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

Правила форума:
Создание Тем не разрешено
Создание Сообщений разрешено
Создавать Вложения не разрешено
Редактирование Сообщений не разрешено
Коды HTML запрещены
Коды форума разрешены
Смайлики разрешены
Коды [IMG] запрещены