Лично от меня: данный эффект не выглядит особо реалистично, я бы лично его не добавлял в свой мод, но иногда такой эффект все же может пригодиться.
Перевод:
В этом туторе я расскажу как добавить эффект блеска для энтити (entity). Этот эффект может быть полезен, когда вы хотите, чтобы энтить была более заметна для игрока, например, оружие в темной комнате.
Мы начнем с добавления этого эффекта к зомби.
Вот зомби из Half-Life. У него нет эффекта блеска по умолчанию.
Теперь мы рассмотрим код зомби (zombie.cpp в папке dll SDK).
Кода здесь много. Однако для этого урока нам нужно только немного изменить функцию спавна. Итак, перейдите к void CZombie :: Spawn () в строке 270. Это должно выглядеть так:
//=========================================================
// Spawn
//=========================================================
void CZombie :: Spawn()
{
Precache( );
SET_MODEL(ENT(pev), "models/system/monsters/zombie.mdl");
UTIL_SetSize( pev, VEC_HUMAN_HULL_MIN, VEC_HUMAN_HULL_MAX );
pev->solid = SOLID_SLIDEBOX;
pev->movetype = MOVETYPE_STEP;
m_bloodColor = BLOOD_COLOR_RED;
pev->health = gSkillData.zombieHealth;
pev->view_ofs = VEC_VIEW;// position of the eyes relative to monster's origin.
m_flFieldOfView = 0.5;// indicates the width of this monster's forward view cone ( as a dotproduct result )
m_MonsterState = MONSTERSTATE_NONE;
m_afCapability = bits_CAP_DOORS_GROUP;
MonsterInit();
}
Перейдите в конец функции и сразу после MonsterInit (); добавьте этот код:
pev->renderfx = kRenderFxGlowShell
Если вы все сделали правильно, то зомби будет выглядеть примерно так:
Отлично! Теперь у нас есть светящийся зомби!
Но... Что, если мы хотим сделать свечение другого цвета? Это просто.
Поместите эту часть кода после строки pev-> renderfx = kRenderFxGlowShell :
pev->rendercolor.x = (номер от 1 до 255);
pev->rendercolor.y = (номер от 1 до 255);
pev->rendercolor.z = (номер от 1 до 255);
Это может показаться странным, но это просто значения для цвета в формате RGB.
То бишь:
rendercolor.x - красный
rendercolor.y - зеленый
rendercolor.z - синий
Изменяя эти значения, можно добиться разного цвета блеска/света.
Например, pev-> rendercolor.x = 255; (при условии, что все остальные значения цвета стоят на единице) создаст красный цвет свечения/блеска. При значениях pev-> rendercolor.x = 128; pev-> rendercolor.z = 128; мы получаем фиолетовый цвет свечения/блеска.
Надеюсь, этот урок поможет кому-нибудь.