Moderator elections are being held. See Valve Developer Community:Moderator elections for more details.
Users who would like to run for moderator must be autoconfirmed and have at least 100 edits. Users can check their own edit count at Special:Preferences.

Talk:Camera Bob

From Valve Developer Community
Jump to: navigation, search

Just wanted to add that you probably want to change the first line

if ( cl_viewbob_enabled.GetInt() == 1)

to

if ( cl_viewbob_enabled.GetInt() == 1 && !engine->IsPaused() )

That way, it won't bob when the game is paused, and it'll prevent a huge bob effect from gathering up from pausing for a long time.

Oh, and after testing this effect, I personally found that it looked better with a zoffset, it looks more natural and is less nauseating (for me at least).

--Wilsonc 20:12, 23 July 2009 (UTC)

customization

This is what I did to make the view bob more customizable:

Near the top of gamemovement.cpp define the convars: (these are the values I used, you can change them of course)

// Camera Bob
ConVar cl_viewbob_enabled	( "cl_viewbob_enabled", "1", 0, "Oscillation Toggle", true, 0, true, 1 );
ConVar cl_viewbob_timer		( "cl_viewbob_timer", "6", 0, "Speed of Oscillation");
ConVar cl_viewbob_scale_x	( "cl_viewbob_scale_x", "0.0", 0, "Magnitude of Oscillation");
ConVar cl_viewbob_scale_y	( "cl_viewbob_scale_y", "0.1", 0, "Magnitude of Oscillation");
ConVar cl_viewbob_scale_z	( "cl_viewbob_scale_z", "0.1", 0, "Magnitude of Oscillation");

then in the WalkMove function:

//view bob code
if ( cl_viewbob_enabled.GetInt() == 1 && !engine->IsPaused() )
{
	float xoffset = sin( 2 * gpGlobals->curtime * cl_viewbob_timer.GetFloat() ) * player->GetAbsVelocity().Length() * cl_viewbob_scale_x.GetFloat() / 400;
	float yoffset = sin( 2 * gpGlobals->curtime * cl_viewbob_timer.GetFloat() ) * player->GetAbsVelocity().Length() * cl_viewbob_scale_y.GetFloat() / 400;
	float zoffset = sin( 2 * gpGlobals->curtime * cl_viewbob_timer.GetFloat() ) * player->GetAbsVelocity().Length() * cl_viewbob_scale_z.GetFloat() / 400;

	player->ViewPunch( QAngle( xoffset, yoffset, zoffset));
}
//end view bob code

this way you can go in-game and test the scale x, y, and z values using the console to determine exactly where you want it. hope this helps somebody! --vecima 22:42, 11 April 2010 (UTC)