Camera Bob

From Valve Developer Community
< De
Jump to navigation Jump to search
English (en)Deutsch (de)Русский (ru)Translate (Translate)

Dieses tutorial wird die die Grundlagen durchgehen, um eine Kamera zu erstellen, die bei Spielerbewegungen wippt. Das Resultat wird eine recht realistische Simulation eines Kopfwippens sein, das fast der HL2 standard Laufgeschwindigkeit und den standard Laufgeräuschen entspricht. Dieses Tutorial wurde nur mit dem HL2MP OB und beta OB SDK Beispiel getestet, sollte aber mit den meisten Valve-Quellcode mit ein paar Anpassungen funktionieren. Ein spezieller Dank geht dabei an sharkkk und Winston des Steam-Forums für das herausfinden dieses ganzen Zeugs.

Quellen: Sharkkk's Code Winston's Code

Der Code

Füge in gamemovement.cpp, vor der Liste mit Defines um Zeile 65 oder so, folgendes ein:


// Camera Bob
ConVar cl_viewbob_enabled	( "cl_viewbob_enabled", "1", 0, "Oscillation Toggle", true, 0, true, 1 );
ConVar cl_viewbob_timer		( "cl_viewbob_timer", "10", 0, "Speed of Oscillation");
ConVar cl_viewbob_scale		( "cl_viewbob_scale", "0.05", 0, "Magnitude of Oscillation");

Alles, was wir hier machen, ist das deklarieren unserer Convars, Booleans und Floats für unseren Kamerawipp-Code unten.

Finde die Funktion CGameMovement::WalkMove( void ) und füge folgendes am Anfang der Funktion ein:

 if ( cl_viewbob_enabled.GetInt() == 1 && !engine->IsPaused() )
	{
		float xoffset = sin( gpGlobals->curtime * cl_viewbob_timer.GetFloat() ) * player->GetAbsVelocity().Length() * cl_viewbob_scale.GetFloat() / 100;
		float yoffset = sin( 2 * gpGlobals->curtime * cl_viewbob_timer.GetFloat() ) * player->GetAbsVelocity().Length() * cl_viewbob_scale.GetFloat() / 400;
		player->ViewPunch( QAngle( xoffset, yoffset, 0));
		
	}

Dies benutzt die Geschwindigkeit des Spielers und die Convars, um die Sicht des Spielers mit einem ViewPunch in Form einer 8 schwingen zu lassen.