User Tools



To check out the released and pending changes, visit NWH Vehicle Physics 2 Trello board here.

For upgrade notes click here.


  • Added top speed per gear display to transmission inspector.
  • Reduced minimum powetrain inertia range.
  • Fixed steering not un-freezing the vehicle.
  • Fixed emissive mesh lights not working with HDRP.
  • Fixed ArcadeModule not checking if vehicle is fully grounded.
  • Fixed trailers not unfreezing with the towing vehicles.
  • [WheelController] Fixed friction force coefficients being applied before slip circle, resulting in unrealistic behavior on slippery surfaces.


  • Fixed powertrain output field not updating when adding new components.
  • Inspector performance improvements.


  • Fixed sounds not playing in correct order (blinker and other multi-clip sounds). Introduced in v1.9.
  • Fixed particle effects spawning at wrong location. Introduced in v1.9.


  • Fixed corrupt Niva prefab in the PUN2 demo.
  • Fixed multiplayer .unityassets extracting to the wrong folder.


  • Added HDRP guide and particle materials:
  • Folder restructure and asset cleanup. Clean import required (remove NWH folder before re-importing).
  • Cleanup of audio code: reduced number of AudioSources, moved some sound components to PlayOneShot, changed the way multiplayer sound is synced, general code cleanup and bug fixes.
  • Implemented MultiplayerState - a simplfied approach to multiplayer integration. Rewritten PUN2 and Mirror multiplayer scripts.
  • Added “Realistic” and “Arcade” (legacy) options to Clutch component.
  • Fixed powertrain values assigned after vehicle initialization not getting applied when referenced outside of the Powertrain.Components list.
  • Changed the way “Freeze While Idle” works. Frozen vehicles are no longer simulated which improves performance. Constraints are no longer used - this enables normal use of Rigidbody constraints in combination with “Freeze While Idle” option.
  • Vehicles are now easier to damage by default. Increased wheel wobble on wheel damage and range at which the wheel damage happens.
  • Improvements to forced induction.
  • Fixed issue with VehicleController > PWR tab sometimes causing problems with powertrain.
  • Fixed inverted WheelController.springCompression value.
  • Fixed issue with damaged wheels rotating around Y axis.
  • Overall bug fixes and improvements.
  • [WC] Fixed “applyForceToOthers” being ignored by depenetration force.
  • [WC] Added “Max Load” field. This is the load rating of the tire and it affects how the friction is calculated, amongst other things.
  • [WC] Added camber/friction curve.
  • [WC] Re-introduced “Show Advanced Settings” to WheelController to reduce clutter with the increasing number of settings.


  • Fix ReorderableList being drawn wrong in latest Unity 2021 versions (known Unity bug).
  • Fix for lateral friction creep when vehicle is stationary on flat ground, introduced in v1.8.0.
  • Clutch variable engagement is now throttle dependent.
  • Increased default clutch engagement speed (by 3x) to avoid stalling on hard braking.


  • [WheelController] Added slip circle strength and shape settings.
  • Bug fix related to the clutch engagement curve.


  • Major friction calculation improvements.
  • VehicleSetupWizard not finding VehicleChanger and ignoring the `Register with Vehicle Changer` option.
  • Added AntiSquat field to WheelController. Similar to the previous Squat field but adjustable in range of -1 to 1 where -1 is full squat and 1 is full anti-squat.
  • Added option to ignore deadzone on steering input.
  • Added speed sensitive steering smoothing curve.


  • Added MotorcycleModule.
  • Added ArcadeModule.
  • Added AirSteerModule.
  • Improvements to powertrain ClutchComponent and DifferentialComponent.
  • NRigidbody improvements.
  • Overall vehicle handling improvements and tweaks.
  • Replaced substep count selector with Physics Update Rate field in [Hz].
  • Replaced ClutchLSD and ViscousLSD with single LimitedSlip option. Viscous slip has been replaced with VLSD_Obsolete_Placeholder and will point to the new LimitedSlip.
  • [WheelController] Improvements to the WheelController resulting in higher high speed stability and overall improved handling.
  • [WheelController] Removed SingleRay option and instead replaced it with possibility to use minimum longitudinal scan resolution of 1 (previously 3).
  • [WheelController] ~20% performance improvement.
  • Many other small changes, tweaks and improvements.


  • Overall clutch improvements: added clutch engagement curve, reworked clutch torque flow, fixed engine not stalling when clutch dumped.
  • Add automatic transmission creep.
  • Improved engine power calculation to allow for holding the engine at steady RPM in neutral.
  • Added SteeringWheelInputProvider zeroToOne option (can be use to select 0→1 or 1→0 as axis reading) and option to flip input for handbrake.
  • Added clutch engagement RPM warning when clutch RPM < idle RPM.
  • Added SteeringWheelInputProvider handbrake axis.
  • Fixed low clutch engagement RPM in VehicleSetupWizard.
  • Fixed stop lights canceling tail lights in multiplayer.
  • Fixed high beam lights do not turn on the tail lights.
  • Fixed states not getting serialized after adding a module and refreshing.
  • Use power of 2 textures for skidmarks to reduce memory usage.


  • Added Monza demo to the SteeringWheel package with the FFB fully set up. Also added SteeringWheelInputProvider Logitech G29 prefab for easier setup.
  • Removed “Freeze While Asleep”. Use “Freeze While Idle” instead.
  • Removed deprecated camera scripts (CameraFollow, CameraOnboard) that were replaced with the universal CameraMouseDrag ~year ago. This means that all the cameras in the demo scene can now be moved/rotated.
  • CameraMouseDrag now targets Transform instead of Vehicle making it usable outside of the asset.
  • Values given by 'Calculate Inertia' are now ~50% higher which gives a better feel to the vehicles.
  • Fixed memory leak caused by skidmark meshes and materials not being disposed of properly.
  • Fixed ReorderableList not working properly in the latest versions of Unity 2021 and 2022.
  • Fixed TransmissionWhine not working.
  • Fixed sound settings not being applied to the wheel sound components.
  • Demo scene tweaks (added vehicle info, sound adjustments, semi truck suspended cab, etc.).
  • Minor bugs and fixes and changes.


  • Fixed assembly definitions for optional packages.


  • Lateral friction changes to improve vehicle stability.
  • Cleaned up assembly definitions (one asmdef per project).
  • Added PostProcessing by default for demo scenes.
  • Anti-roll bar will now not activate while one or two wheels on the axle are in air.
  • Removed TireLoadFrictionCurve,. Use force coefficient on WheelController instead.
  • Replaced obsolete Tarmac and TarmacWet friction presets that have since been replaced with Asphalt and AsphaltWet friction presets. The AsphaltSurfacePreset now uses AsphaltFrictionPreset instead of TarmacFrictionPreset.
  • Removed leftover Debug.Break() from WheelController.
  • Fixed TurboWhistleComponent throwing unneccesary warning messages.
  • Fixed Wheel sounds not routing through mixer.
  • Removed automatic welcome message. It can be found in the About tab of the vehicle controllers instead.
  • Fixed WheelController.VisualUpdate() does not calculate rotation offset.


  • VariableCenterOfMass improvements and bug fixes.
  • Fixed left over debug code inside WheelController.


  • Moved to Unity 2020 LTS.
  • Fixed VariableCenterOfMass calculating center of mass incorrectly.
  • Fixed issues with assembly definitions and re-enabled assembly definitions by default.


  • Added Rewired support.
  • Disabled assembly definitions by default. All the .asmdef files now have .bak extension attached. Remove the extension to use the assembly definitions.
  • Fixed NRigidbody error when a WheelController is destroyed.
  • Fixed WheelController enable and disable not working.
  • Discrete Rigidbody collision is now default. Thanks to @vincurekf for discovering that Continuous collision was the cause for unrealistic high speed collisions.
  • Made all classes partial and more classes virtual for easier extension and modification of the asset.
  • Fixed GetInitSpatialBlend() always returns 0.9.
  • Clamped shift time to 0.02 to prevent 0 shift time which can cause issues with rev matching.
  • Added D/N/R selection through ShiftInto input.
  • Fixed error when no LODs are present on the vehicle.
  • Fixed TurboFlutter does not play random sound.
  • Fixed disabled WheelController continuing to simulate.
  • Fixed FuelModule using Update instead of FixedUpdate.
  • Removed WheelController Visual requirement.
  • Fixed assigning Visual after Initialization makes Visual not move.
  • Fixed Mirror RpcThrottleInput and RpcBrakesInput sending wrong values.
  • Added “AwakeOnStart” option to Settings > State Settings. This determines the state of the vehicle after Start().
  • Increased maximum steer angle value.
  • Updated PUN2 documentation.


  • WheelController can now be used with 'Max Spring Length' of 0.
  • Improved wheel depenetration and added depenetration settings to WheelController.
  • Reworked FlipOverModule and added instant flip over.
  • Fixed ReorderableList crashing Unity when exiting play mode. Only Unity 2021.1.
  • Added support for NetworkRigidbody to MirrorMultiplayerVehicle. Collisions now work in multiplayer too. If NetworkRigidbody is not attached vehicle will be kinematic as before the update.
  • Fixed multiple issues with powertrain inertia.
  • Fixed WheelController not applying any force to surface when bottoming out and spring strength is 0.
  • Fixed WheelController spring gizmos being drawn in wrong place.
  • Fixed NaN issue when max spring length is set to 0.
  • Fixed VehicleComponent not having Enable() called when entering play mode resulting in some modules not initializing properly.
  • Fixed ApplyForceToOthers not applying correct friction force.
  • Fixed missing trees in the Racetrack demo scene.
  • Fixed transmission going into neutral after car stops moving while 'Require Shift Input' selected.
  • Added ''Apply Brakes When Speeding“ option to CruiseControlModule.
  • Added ability to apply throttle manually while cruise control is active.
  • EngineComponent.RPMPercent now returns RPM percentage in relation to rev limiter instead of the solver maximum RPM allowing it to actually reach 1.
  • Modified TransmissionComponent to allow gear skipping at full throttle.
  • Other minor bug fixes and improvements.


  • Moved NVP_NUIEditor and NVP_NUIPropertyDrawer to Editor sub-folder to avoid issues if assembly definition files are removed.


  • Removed requirement for .NET 4.x.
  • Fixed the import issues introduced with the previous version.


  • Added .asmdefs to improve compilation times. With the upcoming updates all NWH assets will feature asmdefs.
  • Major changes to the skidmark system for increased performance and stability. Skidmark settings are now adjustable at runtime.
  • Rework of CVT transmission.
  • Added peak power and torque (and respective RPM values) to the EnginePowertrainComponent and added a readout in the editor. Default clutch slip torque is now set in relation to peak engine torque.
  • Fixed modules initializing twice.
  • Fix brake smoothing not being used.
  • Fixed left and right enter-exit points being swapped inside the vehicle setup wizard.
  • Fixed steering deadzone when returnToCenter is disabled.
  • Fixed wheel damage not working properly.
  • Fixed WheelController issue where the longitudinal force coefficient would increase the actual force applied instead of increasing the maximum tractive force, resulting is higher power output than what is generated by the engine when value of >1 was used.
  • Fixed WheelController “ApplyForceToOthers” option applying excessive lateral force to the target object.
  • Fixed NRigidbody substeps get initialized to 1 in all cases. This affects only standalone WheelController setups since substeps in NVP2 are set through the VehicleController which overwrites the initial value.
  • Fixed WheelController Visual transform scale affecting the Rim Collider scale.
  • Upshift RPM of the TransmissionComponent is now limited to a value lower than the engine rev limiter RPM. This prevents issues with vehicle not upshifting when target upshift RPM is too high.
  • Updated clutch settings on the Semi truck to prevent stalling when going from 1st to reverse and vice versa due to slow clutch release.
  • Other minor bug fixes and improvements.


  • Fixed NRigidbody throwing an error when Rigidbody rotation constraints are used.
  • Fixed build failing due to editor code.


  • Added presets to VehicleSetupWizard. Vehicles are now automatically configured based on the preset settings and vehicle properties. E.g. heavier vehicles will have suspension and friction adjusted to match the weight.
  • Added semi truck to the demo scene. Model provided by GR3D.
  • Fixed trailers braking on reverse.
  • Minor bug fixes and improvements.


  • Add Rigidbody interpolation by default with an option under Settings tab to choose a different value.
  • Fix InputProvider instances list entries duplicating with each scene reload.
  • Added InvertClutch, InvertBrakes, InvertThrottle, etc. options to VehicleInputHandler.
  • Improved input documentation.
  • Improvements and bug fixes related to brakes.
  • Fix deadzone.
  • Updated Mirror and Photon scripts for compatibility with newest versions of each asset.
  • Fix NUIDrawer causing Unity Editor to enter infinite loop due to a bug with UnityEditor.ReorderableList elementHeightCallback when 0 is returned.
  • Fixed turning off low beam lights while braking resets brake lights.
  • Added “Require Camera Rotation Modifier” and “Require Camera Panning Modifier” options to SceneInputProviders, mainly for use with touch screens where modifiers are not needed. Enabling these options makes cameras able to rotate/pan without pressing additional buttons.


  • Restructured the asset to prevent errors when trying to import multiple NWH assets in the same project.
  • Fixed terrain texture issue when the vehicle goes over the edge of a terrain.
  • Improvements to WheelController's damper. Some re-adjustment will be needed on existing vehicles. Damper now has separate bump and rebound curves.
  • Fixed major damper bug that rendered damper ineffective under high spring velocities.
  • Added warning for Powertrain > Wheels ordering.
  • Transmission now calls ReconstructGearList() automatically after the number of forward or reverse gears has changed or a different gearing profile has been assigned.
  • Renamed NWH.VehiclePhysics2.Input.Input to InputHandler to prevent confusion with UnityEngine.Input.
  • Added deadzone setting to InputManager and InputSystem VehicleInputProviders.
  • Fixed 'Brake On Reverse Direction' not working in some cases.
  • Fixed InputHandler.Vertical returning wrong value under braking.
  • Fixed GroundDetection querying terrain texture out of bounds.
  • TrailerHitchModule now searches for trailers across all loaded scenes.
  • Fix input sticking on scene reload when using SteeringWheelInputProvider.


  • NRigidbody is now added to exisiting vehicles automatically if missing.
  • Fixed null event throwing errors in VehicleController.
  • Fixed “No Input Provider” warning even when 'Auto Set Input' is false.
  • Fixed wheels falling through ground when not added as output to powertrain component and the vehicle state is toggled during playtime.
  • Fixed high powered RWD vehicles pulling to one side when going straight.
  • Fixed TrailerHitchModule Attach On Play option not attaching the trailer (again).


  • Implemented physics sub-stepping. Vehicles now run at higher update rate than the rest of physics. Despite this the performance is same to slightly better due to optimizations.
  • Revised friction and friction circle calculations. Eliminated excessive understeer.
  • Many small improvements and bug fixes to both VehicleController and WheelController.
  • Added adaptive smoothing to WheelController visual.
  • Added “Show Advanced Settings” option to WheelController. Only basic options are now displayed by default which reduces clutter.
  • Improved obstacle force calculation.
  • Improvements to WheelController.
  • Add latching handbrake option.
  • Added option to calculate load coefficient from custom curve or automatically (default).
  • Physical properties now can only be changed out of play mode or through scripting before the vehicle is initialized. This is a performance optimization.
  • Reworked and fixed air brake hiss sound.
  • Fixed TrailerHitchModule Attach On Play option not attaching the trailer.
  • Fixed Ackerman steering bug.
  • Fixed OnPointerUp not registering when multiple touches are present resulting in stuck inputs on mobile.


  • Fixed bottoming out force impulse and added damping to prevent vehicles from excessive bouncing after bottoming out hard.
  • Added gizmos to display vehicle dimensions.
  • Added PUN2 demo scene.
  • Added Mirror demo scene.
  • Tuned up inertia calculation.
  • Updated demo vehicles for better handling.
  • Fixed flipped mirror UVs on Lada Niva.
  • Fixed issue with skidmarks sometimes using a wrong material.


  • Implemented proper spring bottom out calculation.
  • Stiffer lateral friction.
  • Lada Niva model is now commercially licensed and no longer CC-BY (as required by Unity).
  • Added mouse input option to both InputSystem and InputManager VehicleInputProviders.
  • Fixed some textures having different native resolution and Max Resolution set in inspector.
  • Fixed error with manual transmission when trying to shift into non-existing gear. Error introduced with rev-matching in v1.3.
  • Fixed error while trying to calculate track of vehicles that have only one wheel per wheel group / axle.
  • Fixed VehicleSetupWizard failing when there are no InputProviders in the scene.
  • Fixed vehicle input not initializing when there are no InputProviders in the scene.
  • Fixed issue with vehicleRigidbody being null during VehicleSetupWizard setup causes errors.


  • Major improvements to tire friction calculation.
  • Improved vehicle inertia tensor calculation, existing results were on the low side.
  • Added new Ackerman steering calculation for 4-wheeled cars. Other vehicles still use the old, linear, calculation.
  • Eliminated WheelController creep in longitudinal direction.
  • Fixed vibration when standing still with vehicles that had large wheel mass.
  • Improved Cruise Control by adding “Deactivate On Brake”.'
  • Fixed a bug with powertrain that resulted in engine being too hard to stall.
  • Fixed FrictionPreset not saving changes once the project is reloaded.
  • Fixed 'flipInput' option in SteeringWheelProvider to flip input from [0,1] to [1,0] instead of [0, -1]
  • Fixed issue with VehicleSetupError where it would throw a cast error if 'Add Cameras' is enabled.
  • Fixed CameraInsideVehicle not registering (bug from 1.2.0).
  • Fixed InputSystem input not resetting after scene reload.


  • Fix input in Monza demo scene.
  • Fix VehicleSetupWizard throwing an error due to a null value of VehicleRigidbody.


  • Added weight sensitive WheelController defaults.
  • Made it possible to create a vehicle from a script at runtime using VehicleSetupWizard.RunSetup().
  • Fixed trailer drives the towing vehicle into the ground when 'Freeze When Asleep' is enabled.
  • Fixed insideVehicle property warning for sound property drawer.
  • Moved VehicleModule Awake() call to after the vehicle is fully initialized.
  • Fixed issue with VehicleComponent.Enable() getting called before VehicleComponent.Initialize().
  • Fixed ShiftInto not getting triggered when using 0-9 keys in the demo.
  • Fixed SteeringWheelInput compile error 'VehicleChanger' does not contain a definition for 'ActiveVehicleController'.
  • Fixed 'Constrain When Asleep' not working.


  • InputProviders have been split to SceneInputProvider and VehicleInputProvider where SceneInputProvider handles scene-related input (camera controls, vehicle switching, character movement, etc.) and VehicleInputProvider handles only vehicle-related input (steering, throttle, brakes, etc.).
  • Some parts of the asset are now shared between DWP2 and NWP2 making the two assets compatible and reducing the code duplication.
  • Fixed issue where blinkers and hazards could be active at the same time.
  • Fixed a bug introduced in 1.1.2 where the multiplayer scripts where not changed to reflect the recent input changed.


  • Input bug fixes related to engineStartStop, boost and light inputs (input not registering or registering multiple times). Introduced in 1.1.2.
  • Added options for non-zero-index rglSliders to SteeringWheelInputProvider.
  • Fixed issue where blinkers and hazards could be active at the same time.


  • Fixed 'autoSetInput' automatically being set to true when vehicle wakes.
  • Fix lights not turning on properly (bug introduced in 1.1)
  • Removed delay between activating a blinker and it turning on.
  • Fixed blinkers sometimes not canceling each other.
  • Rewritten LightManager logic.
  • Minor bug fixes and improvements.


  • Changed how engine losses are calculated to allow the engine to rev more freely. Vehicles will feel slightly more powerful after the update.
  • Fixed unneeded using directives introduced in 1.1 preventing the build from finishing successfully.
  • Added “Hold To Keep In Gear” option to the transmission. This makes the transmission H-shifter friendly. When the option is enabled an input has to be held for the transmission to stay in corresponding gear, otherwise it goes to neutral.
  • Added all available axis options to SteeringWheelInputProvider.
  • Removed shift ban timer (delay between shifts) from manual transmission which would get interpreted as the gearbox not receiving input.
  • Fixed errors caused by the SteeringWheelInputProvider not having been updated to the 1.1 InputProvider overrides.


  • Removed the need for disabling “Queries Hit Triggers” and “Queries Hit Backfaces”.
  • Split “Vertical” axis into “Throttle” and “Brakes” to allow for simultaneous application of both.
  • Added optional bindings: CameraRotation, CameraPanning, CameraRotationModifier, CameraPanningModifier, CameraZoom, FPSMovement and ToggleGUI. This allowed for removal of all the hard-coded inputs in the asset code and all the input now goes through InputProviders.
  • Improved ImputSystem support and made InputSystem default input method.
  • Renamed “NewDesktopInputProvider” to “InputSystemProvider” to prevent confusion.
  • Improved InputSystem with additional, optional bindings: CameraRotation, CameraPanning, CameraRotationModifier, CameraPanningModifier, CameraZoom, FPSMovement and ToggleGUI. This allowed for removal of all the hard-coded inputs in the asset code and all the input now goes through InputProviders.
  • Added gamepad support to the demo scene.
  • Removed shift ban timer from manual transmission.
  • Implemented 'GearShift' class which contains data about the currently occuring gear shift and is used by 'OnShift', 'OnUpshift' and 'OnDownshift' events.
  • Renamed Input.AutoSettable to Input.AutoSetInput since the old name was causing confusion.


  • Improved the way module list is reloaded in editor, removing the delay between clicking on the modules tab and the modules being drawn.
  • Fix modules added after vehicle is initialized, either through scripting or inspector, not registering.
  • Fixed missing trees in the demo scene.
  • Fixed two audio listeners being present in the scene for the first fame when CharacterVehicleChanger is used.
  • Renamed “NewDesktopInputProvider” to “InputSystemProvider” to prevent confusion.
  • Added ground check to the CameraMouseDrag.


  • Major demo improvements: two new vehicles (Lada / Rocket Carrier), mirrors and interiors on all the vehicles, camera improvements, etc. Optimized Ferrari and Monster Truck models.
  • Rewritten exhaust particle code for better visuals, performance and ease of setup.
  • Improved surface particles / dust. Both dust and smoke are now using the same ParticleSystem and particles are emitted on per-wheel basis.
  • Added dirt chunk / pebble particles.
  • Improvements to SurfacePresets with extended and improved settings.
  • Added camera shake on collision.
  • Make 'Validate' option validate model scale and SurfaceMap tags.
  • Added “IsGrounded()” and “IsFullyGrounded()” functions to the VehicleController.
  • Fixed VehicleChanger thowing an error when there are no vehicles present in the scene and 'Character Based' is used.
  • Disable CameraMouseDrag movement while mouse is over UI.
  • VehicleCameras now auto-find target.
  • CameraMouseDrag has been rewritten with a few improvements: smoothing now keeps constant distance from the vehicle, implemented panning, new options to enable/disable dragging/panning, target position offset, initial look angle.
  • Rewritten vehicle enter/exit code.

v0.9.0 - v0.9.5

Versions 0.9.0 to 0.9.5 were considered Beta releases.