Здравствуйте. Как найти точку, которая бы независимо от поворота камеры всегда находилась немного правее от игрока? Сейчас камера устанавливается "правильно" только при определенном повороте камеры. С векторами сталкиваюсь впервые.
Код:
public OnCamThink(iCameraEnt)
{
new iIndex = get_entvar(iCameraEnt, var_owner);
if(!is_user_alive(iIndex) || !is_entity(iCameraEnt))
return;
new Float:flPlayerOrigin[XYZ], Float:flCamOrigin[XYZ], Float:flVecPlayerAngles[XYZ], Float:flVecCamAngles[XYZ];
get_entvar(iIndex, var_origin, flPlayerOrigin);
get_entvar(iIndex, var_view_ofs, flVecPlayerAngles);
flPlayerOrigin[X] += flVecPlayerAngles[X] + 25.0;
flPlayerOrigin[Z] += flVecPlayerAngles[Z];
get_entvar(iIndex, var_v_angle, flVecPlayerAngles);
angle_vector(flVecPlayerAngles, ANGLEVECTOR_FORWARD, flVecCamAngles);
xs_vec_sub_scaled(flPlayerOrigin, flVecCamAngles, 45.0, flCamOrigin);
engfunc(EngFunc_TraceLine, flPlayerOrigin, flCamOrigin, IGNORE_MONSTERS, iIndex, 0);
new Float:flFraction;
get_tr2(0, TR_flFraction, flFraction);
xs_vec_sub_scaled(flPlayerOrigin, flVecCamAngles, flFraction * 45.0, flCamOrigin);
set_entvar(iCameraEnt, var_origin, flCamOrigin);
set_entvar(iCameraEnt, var_angles, flVecPlayerAngles);
set_entvar(iCameraEnt, var_nextthink, get_gametime() + 0.01);
return;
}