GroundDetection is one of the most important aspects of NWH Vehicle Physics. It determines which
WheelFrictionPreset will be used for calculating friction, which effects will be active and which sounds will play.
In short, it determines which wheel is on which surface.
Ground detection works based on
Terrain texture indices and object tags so it is very important how many textures there are assigned to the
Terrain and in which order.
To prevent having to change the settings across all the vehicles
ScriptableObject was introduced in NWH Vehicle Physics 2.
Terrains in one scene.
GroundDetectionruns checks for a maximum of one wheel at a time. This is to improve on performance but it can introduce a small delay from the time the surface has been changed to the time
GroundDetectionPreset is a
ScriptableObject that determines which
SurfacePreset will be used on which terrain texture and object. This is done through
SurfacePreset to use for which terrain texture and/or object tag.
GroundDetection runs a check for each
WheelComponent to determine which surface that
WheelComponent is on. This is done by checking all the assigned
SurfaceMaps in order and if any
SurfaceMap has a matching terrain texture index in
Terrain Texture Indices list, or the object the wheel is on has the tag from
Surface Preset will be assigned to that
Adding a gravel
SurfaceMap will be used as an example.
SurfaceMapby clicking on
+button on the bottom of the list.
Terrain Texture Indiceslist.
GravelRoad) to those objects and add it to
SurfacePreset tells the
VehicleController which settings to use for which surface.
This determines tire friction, the look of effects such as skidmarks and particle effects. It also changes sounds to match the surface.
Once set up,
SurfacePreset can be used for different terrains, scenes or even across games since
SurfacePresets do not carry any scene-specific fields.
Create ⇒ NWH Vehicle Physics ⇒ Surface Preset. This will create a new
ScriptableObjectin the current directory.
Friction Preset. This is a
ScriptableObjectwith settings for tire friction so that
WheelControllercan adjust its behavior according to the surface type. With asset come multiple
Friction Presets so just pick one of those for now.
Skidmark Materialwill be used on generated skidmarks while the wheel is on this surface type.
Slip Factordetermines if the skidmarks are slip dependent. On soft surfaces such as sand this value should be 0 as the skidmarks/thread-marks should always be visible, no matter the slip. On hard surfaces such as asphalt skidmarks are only visible when there is wheel slip.
Smokeshould be used for hard surfaces (asphalt, concrete),
Dustfor dusty surfaces (gravel, sand). The difference between the two is in the way the emission rates are calculated. If
Smokeis selected this will be related to the wheel slip while it will depend on vehicle speed for
Particle Life Distanceis used to calculate
Start Lifetime. The faster the vehicle is going the shorter the lifetime of the particles will be.
Max Particle Emission Rate Over Distancedetermines amount of particles emitted over distance of one meter.
Max Particle Lifetimedetermines the absolute maximum time a particle can be alive. When still this value determines how long the particle lives. When moving
Particle Life Distanceis used instead.
Chunk particles represent pieces of dirt, debris, sand or pebbles thrown behind the tire when there is wheel spin.
Depending on speed the lifetime of a a particle is calculated from
Max Chunk Lifetime (when near still) or
Chunk Life Distance (when moving).
SurfaceSoundsettings are used to set
WheelTireNoiseComponentSoundComponents values for current surface.