Table of Contents

Ground Detection

GroundDetection inspector.


To prevent having to change the settings across all the vehicles GroundDetectionPreset ScriptableObject was introduced in NWH Vehicle Physics 2.

Ground Detection Preset

GroundDetectionPreset inspector.

GroundDetectionPreset is a ScriptableObject that determines which SurfacePreset will be used on which terrain texture and object. This is done through SurfaceMaps.

2023/05/14 16:35

Surface Map

SurfaceMap inspector.
  • SurfaceMap tells GroundDetection which 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 Tags list, Surface Preset will be assigned to that WheelComponent.
Terrain texture indices. Note that counting starts from 0.

Adding a New Surface Map

Adding a gravel SurfaceMap will be used as an example.

  • Add a new SurfaceMap by clicking on + button on the bottom of the list.
  • Check on which texture positions are the gravel textures. In the image above that would be 5 and 7. Add those numbers to the Terrain Texture Indices list.
  • If there are objects that should represent gravel in the scene, assign a tag (e.g. GravelRoad) to those objects and add it to Tags list.
2023/05/14 16:35

Surface Preset

SurfacePreset inspector.

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.

Setup

  • Right click on empty space in Project window and select Create ⇒ NWH Vehicle Physics ⇒ Surface Preset. This will create a new SurfacePreset ScriptableObject in the current directory.
  • Assign a name to it for easier debugging later.
Friction
  • Assign a Friction Preset. This is a ScriptableObject with settings for tire friction so that WheelController can adjust its behavior according to the surface type. With asset come multiple Friction Presets so just pick one of those for now.
Skidmarks
  • Adjust skidmark settings according to the surface type. More about skidmark settings on Skidmarks page.
  • Skidmark Material will be used on generated skidmarks while the wheel is on this surface type.
  • Slip Factor determines 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.
Dust/Smoke Particles
  • ParticleType - Smoke should be used for hard surfaces (asphalt, concrete), Dust for dusty surfaces (gravel, sand). The difference between the two is in the way the emission rates are calculated. If Smoke is selected this will be related to the wheel slip while it will depend on vehicle speed for Dust.
  • Particle Life Distance is used to calculate ParticleSystem's Start Lifetime. The faster the vehicle is going the shorter the lifetime of the particles will be.
  • Max Particle Emission Rate Over Distance determines amount of particles emitted over distance of one meter.
  • Max Particle Lifetime determines the absolute maximum time a particle can be alive. When still this value determines how long the particle lives. When moving Particle Life Distance is used instead.
Chunk Particles

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).

Sounds
  • SkidSound and SurfaceSound settings are used to set WheelSkidComponent and WheelTireNoiseComponent SoundComponents values for current surface.
2023/05/14 16:35