Making a controllable brush vehicle

First create a brush-based model of your plane, keep it balanced so it doesn't tip over.
Select it and bind it to the func_physbox entity, assign it a name. plane_01 will do fine.
You will require a seat to perch in. You should use prop_vehicle_prisoner_pod (you could use a buggy or airboat but that would look odd), name the chair plane_01_pod. Also make sure the pod isn't clipping into the plane's func_physboxes, if it is then make sure that the seat is not solid (it's okay if it clips into a door or other non-phys objects, but not the func_physbox).
Next set the outputs to the plane_01_pod like so.
	OnOpen 	plane_01_pod 	ExitVehicle	 	0.00	No
	PlayerOff	plane_01_gameui	Deactivate 	 	0.00	No
	PlayerOn 	plane_01_gameui	Activate 	 	0.00	No
	PlayerOn 	plane_01_pod 	Open 	 	0.00	No
	PlayerOn 	plane_01_pod 	Unlock 	 	0.00	No
Now make some phys_constraints to hold the plane_01_pod to plane_01.
You also might want to make a trigger system to make it easier for the player to get in the plane, and one that will teleport the player out (the top or either side of the plane) when exiting, to cancel out any problems that can occur, like getting stuck within the plane's solid parts.
Make a game_ui entity. Name it plane_01_game_ui, and set the outputs to the following.
	AttackAxis	plane_01_logic_fly 	SetValueCompare	 	0.00	No
	PlayerOff 	plane_01_fly2 	Deactivate 	 	0.00	No
	PlayerOff 	plane_01_pod 	Unlock 	 	0.00	No
	PlayerOff 	plane_01_pod 	Open 	 	0.00	No
	PlayerOff 	plane_01_pod 	ExitVehicle 	 	0.00	No
	PlayerOff 	plane_01_fly1 	Deactivate 	 	0.00	No
	XAxis 	plane_01_logic_comparex	SetValueCompare	 	0.00	No
	YAxis 	plane_01_logic_comparey	SetValueCompare	 	0.00	No
Now you are going to require three logic_compare entities. One for each of the axes, pitch, yaw and roll. These will control your thrusters.
First make a logic_compare entity near the front of the plane and name it plane_01_logic_comparey. Then set the outputs to the following
	OnEqualTo 	plane_01_down	Deactivate	 	0.00	No
	OnEqualTo 	plane_01_up 	Deactivate	 	0.00	No
	OnGreaterThan	plane_01_down	Activate 	 	0.00	No
	OnGreaterThan	plane_01_up 	Deactivate	 	0.00	No
	OnLessThan 	plane_01_down	Deactivate	 	0.00	No
	OnLessThan 	plane_01_up 	Activate 	 	0.00	No
Make another logic_compare on one of the wings. Name it plane_01_logic_comparex and set the outputs to the following
	OnEqualTo 	plane_01_roll_counter_clockwise	Deactivate	 	0.00	No
	OnEqualTo 	plane_01_roll_clockwise 	Deactivate	 	0.00	No
	OnGreaterThan	plane_01_roll_counter_clockwise	Deactivate	 	0.00	No
	OnGreaterThan	plane_01_roll_clockwise 	Activate 	 	0.00	No
	OnLessThan 	plane_01_roll_counter_clockwise	Activate 	 	0.00	No
	OnLessThan 	plane_01_roll_clockwise 	Deactivate	 	0.00	No
Make another logic_compare near the engines. Name it plane_01_logic_fly and set the outputs to the following
	OnEqualTo 	plane_01_fly2	Deactivate	 	0.00	No
	OnEqualTo 	plane_01_fly1	Deactivate	 	0.00	No
	OnGreaterThan	plane_01_fly1	Activate 	 	0.00	No
	OnGreaterThan	plane_01_fly2	Activate 	 	0.00	No
	OnLessThan 	plane_01_fly1	Deactivate	 	0.00	No
	OnLessThan 	plane_01_fly2	Deactivate	 	0.00	No
Now you need to setup a thruster.
Place a phys_thruster on the left end on the wing and name it plane_01_roll_clockwise. Set the parent to
plane_01, set the force to 800 and set the direction of the force to UP. Go into the flags and check 'ignore mass'.
Place a phys_thruster on the right end on the other wing and name it plane_01_roll_counter_clockwise. Set the parent to
plane_01, set the force to 800 and set the direction of the force to UP. Go into the flags and check 'ignore mass'.
Place a phys_thruster on the front of the plane and name it plane_01_up. Set the parent to
plane_01, set the force to 800 and set the direction of the force to UP. Go into the flags and check 'ignore mass'.
Place a phys_thruster on the front of the plane and name it plane_01_down. Set the parent to
plane_01, set the force to 800 and set the direction of the force to DOWN. Go into the flags and check 'ignore mass'.
Place a phys_thruster at the end of the left engine and name it plane_01_fly1. Set the parent to
plane_01, set the force to 2000 and set the direction of the force to "14 0 0". Go into the flags and check 'ignore mass'.
Place a phys_thruster at the end of the right engine and name it plane_01_fly2. Set the parent to
plane_01, set the force to 2000 and set the direction of the force to "14 0 0". Go into the flags and check 'ignore mass'.
You should now have a basic working plane that will probably need some adjustments here and there.
== See also ==
* Vehicles (level design)
Category:Level Design