Страницы (2): [1] 2 » Показать все 29 сообщений этой темы на одной странице |
HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Half-Life SDK (https://hlfx.ru/forum/forumdisplay.php?forumid=8)
-- Помогите! Сдвиг камеры от 3 лица в лево XX (https://hlfx.ru/forum/showthread.php?threadid=5544)
Помогите! Сдвиг камеры от 3 лица в лево XX
Всем доброва дня и крепкова здоровья.
Вот уже приличное время пытался сделать сдвиг камеры от 3 лица(thirdperson)
что бы модель сдвинулась в лево в хл есть такое.
Консольные команды для вида от 3 лица
чтобы крутить камеру
cl_pitchup - можно сделать чтоб можно было смотреть вверх ногами
cam_idealdist - дистанция камеры
cam_idealpitch - наклон камеры
cam_idealyaw - поворот камеры
chase_active - второй вариант вида от третьего лица.
chase_back - на сколько камера отдалена
chase_right - на сколько камера уходит в право (чтобы влево - пиши с минусом)
chase_up - на сколько камера уходит вверх
Вот а в XASH таких команд нет меня интересует команда chase_right чтобы от третьего лица сместить модель игрока в лево ,а то она по центру.
Добавлено 06-08-2020 в 01:43:
Ku2zoff Мне подсказал что нужно искать в файле in_camera.cpp, но я так и не смог сам эту команду добавить.
Если кто знает что и куда надо добавить помогите пожалуйста!!!!
Начни чтоли с более простого, вот с этим форком кваки можешь поэкспериментировать: http://www.celephais.net/fitzquake/
Тебе видимо нужно взять углы viewangles или cl_viewangles, сделать им AngleVectors(NULL, right, NULL ) и потом взять позицию камеры (vieworg?) и прибавить к ней вектор right. Только надо как-то избежать постоянного наращивания позиции камеры на размер этого вектора, завести другую переменную или может брать оригин не камеры а игрока.
VectorMA( ppparams->vieworg, pparams->right, -50.0, pparams->vieworg ); |
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Спасибо что пытаетесь помочь.
Дядя Миша а в какой файл надо это добавить?
Я копал в файле r_view.cpp туда надо?
Next Day r_view.cpp, функция должна называться V_CalcThirdPersonRefdef.
Кстати, как сделаешь, проверь прицеливание. Когда я крутил квары chase_right/left, камера уезжала куда надо и прицел тоже. А вот игрок продолжал стрелять туда, где рыньше находился прицел.
Ну вообщем что то не работает
//==========================
// V_CalcThirdPersonRefdef
//==========================
void V_CalcThirdPersonRefdef( struct ref_params_s * pparams )
{
VectorMA( pparams->vieworg, pparams->right, -50.0, pparams->vieworg );///ставил в разные места функции
static float lasttime, oldz = 0;
pparams->vieworg = pparams->simorg;
pparams->vieworg += pparams->viewheight;
pparams->viewangles = pparams->cl_viewangles;
V_CalcSendOrigin( pparams );
// this is smooth stair climbing in thirdperson mode but not affected for client model
if( !pparams->smoothing && pparams->onground && pparams->simorg[2] - oldz > 0.0f )
{
float steptime;
steptime = pparams->time - lasttime;
if( steptime < 0 ) steptime = 0;
oldz += steptime * 150.0f;
if( oldz > pparams->simorg[2] )
oldz = pparams->simorg[2];
if( pparams->simorg[2] - oldz > pparams->movevars->stepsize )
oldz = pparams->simorg[2] - pparams->movevars->stepsize;
pparams->vieworg[2] += oldz - pparams->simorg[2];
}
else
{
oldz = pparams->simorg[2];
}
lasttime = pparams->time;
V_GetChaseOrigin( pparams->viewangles, pparams->vieworg, cl_chasedist->value, pparams->vieworg );
float pitch = pparams->viewangles[PITCH];
// normalize angles
if( pitch > 180.0f )
pitch -= 360.0f;
else if( pitch < -180.0f )
pitch += 360.0f;
// player pitch is inverted
pitch /= -3.0;
cl_entity_t *ent = GET_LOCAL_PLAYER();
// slam local player's pitch value
ent->angles[PITCH] = pitch;
ent->curstate.angles[PITCH] = pitch;
ent->prevstate.angles[PITCH] = pitch;
ent->latched.prevangles[PITCH] = pitch;
}
Добавлено 06-08-2020 в 15:08:
Если добавить в начале файла #define VectorMA
то ошибки конечно нет ,но вид все равно не меняется.
Что я сделал не так
Next Day GetChaseOrigin обновляет vieworg, так что после неё ставь.
И картинки конверти в JPG перед выкладыванием.
Добавлено 06-08-2020 в 21:49:
VectorMA похоже в ксаше нету, возьми её в спирите и целиком размести где-то над ThirdPersonRefDef. VectorMA это три строчки, причём она бывает со звёздочками и без, попробуй что заработает.
Вообще я бы как начинающий, пока на Спирите и остался а не лез сразу в Ксаш.
Добавлено 06-08-2020 в 22:00:
Ku2zoff для этих целей можно утащить код из дядемишиного танка, где флаг Match Target.
Добавлено 06-08-2020 в 22:06:
или из кваки из chase_active
VectorMA( pparams->vieworg, pparams->right, -50.0, pparams->vieworg );///ставил в разные места функции |
static float lasttime, oldz = 0; |
pparams->vieworg = pparams->simorg; |
Crystallize С картинками понял если что то в .JPG
Спирит не подходит нужен ксаш.Кодить особо не собираюсь ,просто нужно пара
фишек прикрутить например эта очень нужна.
Ku2zoff Ставил я код и в конце и само собой после GetChaseOrigin просто на примере от без исходности чисто случайно поставил самую тупую попытку в начале функции.
Насчет VectorMA ну если из хл то это ставить ?
void VectorMA (const vec3_t veca, float scale, const vec3_t vecb, vec3_t vecc)
{
vecc[0] = veca[0] + scale*vecb[0];
vecc[1] = veca[1] + scale*vecb[1];
vecc[2] = veca[2] + scale*vecb[2];
}
ну естественно не компилит ошибки,может что то другое?
А в спирите такой функции не нашел, в каком файле искать?
Мужики а по поводу код из Дяде Мишиного танка, где флаг Match Target что то вообще не понял.
В квейк лезть я там вообще потеряюсь.
Да блин я думал задача из простых ,но вожусь я с ней фиг знает сколько и чем дальше тем не легче.!
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Crystallize Да у меня тоже скомпилировалось.
void VectorMA (const vec3_t veca, float scale, const vec3_t vecb, vec3_t vecc)
{
vecc[0] = veca[0] + scale*vecb[0];
vecc[1] = veca[1] + scale*vecb[1];
vecc[2] = veca[2] + scale*vecb[2];
}
//==========================
// V_CalcThirdPersonRefdef
//==========================
void V_CalcThirdPersonRefdef( struct ref_params_s * pparams )
{
static float lasttime, oldz = 0;
pparams->vieworg = pparams->simorg;
pparams->vieworg += pparams->viewheight;
pparams->viewangles = pparams->cl_viewangles;
V_CalcSendOrigin( pparams );
// this is smooth stair climbing in thirdperson mode but not affected for client model
if( !pparams->smoothing && pparams->onground && pparams->simorg[2] - oldz > 0.0f )
{
float steptime;
steptime = pparams->time - lasttime;
if( steptime < 0 ) steptime = 0;
oldz += steptime * 150.0f;
if( oldz > pparams->simorg[2] )
oldz = pparams->simorg[2];
if( pparams->simorg[2] - oldz > pparams->movevars->stepsize )
oldz = pparams->simorg[2] - pparams->movevars->stepsize;
pparams->vieworg[2] += oldz - pparams->simorg[2];
}
else
{
oldz = pparams->simorg[2];
}
lasttime = pparams->time;
V_GetChaseOrigin( pparams->viewangles, pparams->vieworg, cl_chasedist->value, pparams->vieworg );
float pitch = pparams->viewangles[PITCH];
// normalize angles
if( pitch > 180.0f )
pitch -= 360.0f;
else if( pitch < -180.0f )
pitch += 360.0f;
// player pitch is inverted
pitch /= -3.0;
cl_entity_t *ent = GET_LOCAL_PLAYER();
// slam local player's pitch value
ent->angles[PITCH] = pitch;
ent->curstate.angles[PITCH] = pitch;
ent->prevstate.angles[PITCH] = pitch;
ent->latched.prevangles[PITCH] = pitch;
VectorMA( pparams->vieworg, -50.0, pparams->right, pparams->vieworg );
}
Но самое интересное то что камера не сместилась совсем
Добавлено 06-08-2020 в 21:23:
Так с чего она сместится, если pparams->right не был просчитан. Он только в firstperson считается. Добавь перед этой строчкой вот такую:
AngleVectors( pparams->cl_viewangles, pparams->forward, pparams->right, pparams->up ); |
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша ты прав насчет тыканья ,но другого пути для меня пока нет да и были удачи +- срабатывало ,но не сейчас!
// slam local player's pitch value
ent->angles[PITCH] = pitch;
ent->curstate.angles[PITCH] = pitch;
ent->prevstate.angles[PITCH] = pitch;
ent->latched.prevangles[PITCH] = pitch;
AngleVectors( pparams->cl_viewangles, pparams->forward, pparams->right, pparams->up );
VectorMA( pparams->vieworg, -50.0, pparams->right, pparams->vieworg );
}
Вот так надо добавить? если да то Дядя Миша все равно сдвига нет!
Временная зона GMT. Текущее время 03:07. | Страницы (2): [1] 2 » Показать все 29 сообщений этой темы на одной странице |
На основе vBulletin версии 2.3.0
Авторское право © Jelsoft Enterprises Limited 2000 - 2002.
Дизайн и программирование: Crystice Softworks © 2005 - 2024