
Learn to install Unity by creating a free Unity ID, downloading Unity Hub, and selecting a supported version. Then manage installs and start building your driving game.
Create a new Unity project using the high definition render pipeline, select the latest version, and import Trees assets plus standard assets to prepare your driving game.
Export the car model from the Unity Standard Assets, locate the car mesh in models, and copy it to Blender to start building a track.
Download blender from blender.org and install blender 2.92, noting that versions from 2.8 onward share a similar interface, with the Windows installer MSI.
Import the skycar FBX, adjust scale for the track, and organize parts by creating and naming a car collection, then prepare to begin building the track.
Place a large plane, apply the Interlagos image as a texture, and adjust the scale to fit the car while resolving view clipping beyond 1000m, and save as Interlagos track.
Create a driving track in Unity by building a bezier curve from the start position, moving handles, subdividing segments, and aligning points to form a smooth, closed loop.
Align a plane to a bezier curve and use array and curve modifiers to form a road that follows the track, then refine with edge loops, uvs, and curve resolution.
Adjust the road by editing a bezier curve in wireframe and top orthographic views, smoothing bends, and preventing gaps and clipping for a seamless driving track.
Learn to model a rumble strip in blender, align it to a track, and use array and curve modifiers for a realistic edge cue.
Model a hard metal barrier, position it beyond the rumble strip, and apply a metal material while using array and bezier curve to wrap it along the track.
Create an outer soft barrier around the track by shaping a cube along Bezier curve 001 with an array, keeping it outside the hard barrier.
Create an inner soft barrier along the road using a bezier curve, adjust endpoints, and ensure it doesn't overlap the hard barrier.
Finish the road geometry, bridge gaps, and apply UV maps to texture the road. Project textures from view and refine rumble strips for a clean, game-ready surface.
Master UV mapping of hard and soft barriers, project from view, mark seams, unwrap, and apply the array to convert to final geometry for use in a Unity driving game.
Learn to edit hard and soft barriers in unity, using x-ray selection and delete faces to control shortcuts, shape the track, and guide player movement.
Import the stadium FBX into Blender, delete unwanted parts, rename to stadium seating, and export as interlagos for importing into Unity and texturing.
Import a race track into Unity by creating a new scene and dragging the Interlagos track. Set up materials, normal maps, and tiling, adjust lighting, and save the scene.
Place and duplicate starting lights and checkpoint signs, creating red, amber, and green emissive lights. Adjust terrain to 2500 by 2500 and apply grass texture for a seamless track.
Set up hdr sky and skybox, adjust fog and exposure. Sculpt terrain with stamp brushes, add pine trees, and paint sand textures while monitoring frame rate and triangles for performance.
Add a car from Unity standard assets, place it on terrain with wheel colliders and a control script, and configure a Cinemachine camera to follow and view the car.
Replace the sky car with a Formula One F1 model, import textures, align wheels, and apply body, metal, mirrors, and tire materials to prepare a Unity F1 car for gameplay.
Tune a rear wheel drive f1 car in unity by adjusting engine sound pitch, traction, torque over all wheels, downforce, top speed, and anti aliasing.
Explore post processing for a Unity driving game by configuring a global volume, applying bloom, chromatic aberration, tone mapping, white balance, and shadow adjustments to achieve a cinematic look.
Add background trees using simple planes with textures behind the track to preserve frame rate, then duplicate and group them under an empty bg trees object to surround the track.
Attach mesh colliders to the road, barriers, rumble strips, lights, and checkpoint signs to enable realistic driving collisions, and duplicate signs for two checkpoints while testing with renderers off.
Build a speed UI in Unity featuring a speedometer with a radial speed ring, speed text, and gear display on a scalable canvas.
Display the current gear number in Unity by syncing the save script gear value to a gear text UI element, starting at first gear.
Drag the Moon font into the font slots for speed, miles per hour, and gear text, then adjust font size and position to center the speed at 100.
In this Unity lesson, add a top HUD panel with a gray background and dynamic UI text for position, lap, race time, and best lap, organized under a labels group.
Implement a lap counter in Unity using a trigger collider and lap script to increment the lap number, and display current and total laps in the UI.
Track lap times in Unity by updating minutes and seconds with delta time, reset on lap change, and display two digits in the UI for minutes and seconds.
Implement an always-counting race timer in a Unity driving game. Track minutes and seconds with public static floats and update the UI text, ensuring the timer doesn't reset on lap changes.
Record and compare lap times by saving last lap values, update the best lap when beat occurs, and display the new best minutes and seconds in the UI.
Implement checkpoint timing in Unity by recording game time at checkpoints and displaying a color-coded UI text that hides after two seconds via a coroutine.
Implement an on-screen 'new lap record' notification that appears for 2–3 seconds whenever a new best lap time is achieved. Model the timing after the checkpoint display in Unity.
Activate a new lap record label when a best lap is saved, using a save script with newRecord flag and a coroutine. Plan a mini map display after lap one.
Create a Unity mini map with a dedicated camera, render texture, and raw image to show only the road and an unlit car marker on a mini map layer.
Disable motion blur in hdrp to prevent wheel distortion at speed. Adjust the main camera's anti-aliasing and sharpening: raise sharpen to 0.6 and set anti-flicker to 0 to reduce ghosting.
Learn to differentiate road and grass in Unity by tagging road and terrain, detecting wheel-ground contact, and dynamically adjust wheel friction stiffness for realistic grip.
Import rumble strip and thud sounds from Freesound.org, assign them as 3D audio on the F1 car, and trigger rumble playback when wheels hit strips.
Set up a front collision trigger with a thud sound, attach a 3d audio source, and use a boolean guard in the progress-tracker script to play once per barrier hit.
Optimize your Unity driving game by updating road and terrain state only when changes occur, and use a changed flag to stop updating the wheel friction curve every frame.
Create progress waypoints along the track in Unity to track car position, show wrong way text, and require a full lap before triggering the next lap, using duplicable trigger cubes.
Create a waypoint system in Unity with 133 trigger colliders and a thud cube to track the car via a progress tracker, updating the current waypoint and detecting wrong way.
Learn to implement and debug a waypoint progress system in Unity for a driving game, including wrong way detection, penalty options, and lap progression.
Implement a wrong-way warning in Unity by tracking current and last waypoint numbers, using a 0.5 second coroutine delay, and displaying the message on the canvas.
Implement a Unity lap system with a halfway activated flag and an activator waypoint to prevent wrong-way cheating, and show a temporary wrong-way message that resets.
Block gaps on the track by placing barrier cubes with ground-aligned material, box colliders, and a barrier tag to prevent shortcuts, then set up a time trial.
Develop a time-trial driving game in Unity using a red-amber-green starting lights sequence to gate car movement. A coroutine orchestrates the transitions and a race-start flag enables driving once green.
Create a Unity driving game by importing New Graphics assets, set textures to Sprite 2D UI, add start sounds from Freesound.org, and implement a go text with audio triggers.
Create a time trial UI in Unity by building a canvas panel with gold, silver, and bronze time displays, linking icons and minutes/seconds for flexible track and lap configurations.
Set up a time trial system in Unity by defining race types, inputting gold, silver, and bronze thresholds, and updating the UI with formatted minutes and seconds.
Create a finish point and race over logic to complete the final lap in Unity, slowing time and updating the time-trial UI as max laps are reached.
Display the player's position on the UI by calculating it from progress waypoints and total cars, and update the position text as cars pass each waypoint.
Compare race time minutes and seconds against gold, silver, and bronze criteria in a Unity time trial, updating the save script booleans and logging outcomes; set fail if not achieved.
Display the time trial results on a UI panel, using gold, silver, and bronze stars and a win message; show the panel via a one-time coroutine when the race ends.
apply penalty seconds to race time by updating a save script and enforcing a single penalty per frame to produce accurate time trial results with minutes and seconds.
Adjust wheel hub stiffness and wheel slip to introduce corner sliding in a rear-wheel drive car. Set front forward stiffness to 2.6 and front sideways to 0.8 with 0.9 slip.
Learn how to implement braking while turning in a Unity car controller by using a brake slide flag and an adjustable steer helper that increases during braking to enable cornering.
Move from the time trial to a race track and configure an AI car in Unity by turning the player car into an AI prefab and adding a waypoint controller.
Create a waypoint circuit to guide the AI car around the track in Unity, assign the circuit using all child objects, and auto rename for a smooth route.
Learn how to customize AI cars in Unity using waypoint targets, look ahead, and steering helpers to improve cornering and braking behavior.
Tune the AI car to feel human-like by adjusting lookahead and steering, then test against your vehicle and tweak wheel stiffness and downforce for a beatable rival.
Configure AI cars in Unity for a driving game by creating an AI leader with torque, downforce, top speed, and steer helper, then add color-coded markers and slower backmarkers.
Tune car audio in Unity by adjusting max roll off, fading volume with distance, and enabling a doppler effect for a realistic driving experience.
Implement ai nudging in a Unity driving game by slowing down the other car when it collides with the player's car, using the player car controller and collision logic.
Guide ai car controllers to reverse and readjust after hitting barriers, using a barrier stop flag, on trigger enter, and a 1.5-second coroutine to recover.
Unity course video demonstrates assigning unique progress tags i1 to i7 to AI cars, tracking lap numbers, and recording per-lap positions with waypoint triggers.
Track each car’s lap count and position by updating lap-specific counters at progress waypoints and saving per-lap positions as drivers pass each waypoint.
Learn to detect race winners and finish positions by creating multiple finish points for AI cars, map each car’s finish time and name, and record race stats in Unity.
Set up a Unity leaderboard user interface: a full-screen panel with background, header, and slots for position, name, and race time, including a highlighted player panel, ready for script-driven population.
Write a finish line script to save the player's finish position, assign their name, and reveal the leaderboard at race end, while a car positions system slots racers into slots.
Learn how to create a Unity leaderboard display by writing a C# script that passes position, name, minutes and seconds to ui text fields, and dynamically assign these across panels.
Implement a Unity driving game leaderboard that updates ai and player finish positions, names, and race times, and formats minutes and seconds with leading zeros for a clear, dynamic UI.
Implement per-car stop logic after lap completion to prevent late AI cars from clearing the leaderboard. Use randomized barrier reset and finish-point tags with coroutines to stop driving.
Fix race track mode by correcting the car number display, stopping cars when race completes, and fading out engine audio, with time scale adjustments and disabled waypoint cubes.
Create the main menu in unity by importing a car image and logo, adding free stock music with attribution, and configuring a canvas with a press enter to start prompt.
Build a track selection menu in Unity by arranging UI buttons and images, linking the main menu to the racetrack scene via a simple scene management script.
Create a track options menu in Unity, wiring up sprites, panels, and buttons to switch tracks, set mode, laps, and opponents, with a race track menu script controlling visibility.
Create an options menu script in Unity to toggle between time trial and race. Save options and a lap counter up to twelve with universal save and player preferences.
Implement a universal save with public static variables that persist across scenes (don't destroy on load), pass lap counts to the user interface, and load time trial or racetrack scenes.
Create a Unity loading screen with a full-screen panel and loading text that appears while the next scene loads, using a coroutine to display the load screen before switching scenes.
Pass the opponent count between scenes in a Unity driving game using a universal save. Set total cars and show the correct opponents on the racetrack for race mode.
Build a time trial finish menu in Unity by replacing placeholders with gold, silver, bronze stars, adding animation and music, and wiring a continue button to return to the menu.
Implement a quit menu for the time trial in Unity, wiring a quit panel with yes/no buttons and an escape trigger, then test scene transitions and racetrack visibility.
Reset values clear lap number, lap time, race time, checkpoints, and user interface states before starting a race, while preserving the best lap time and resetting time scale to 1.0.
Display the finish position on the racetrack UI and show credits based on placement to motivate racing. Then load the leaderboard, hide the results, and pause time when revealing standings.
Learn how to implement a credit system in Unity, using a universal save and PlayerPrefs to persist credits between sessions, with first, second, and third place payouts based on opponents.
Display and update credits on the main menu using a left-aligned UI text, a UI main menu script, and loading credits from universal save with a short delay.
Implement quit options in a Unity driving game, update gold, silver, and bronze time trial credits, and save with PlayerPrefs, wiring a quit menu with escape key.
Create a Unity stats screen that displays and edits the player's name with a text field and edit button, persisting changes via PlayerPrefs.
Add a finishing stats screen showing races won and races lost, with labeled UI fields aligned to the track data and updated from a universal save using PlayerPrefs.
Link and toggle the stats panel in Unity driving game by creating on/off switches with public methods and set active, updating the leaderboard, and returning to the main menu.
Fixes UI bugs in the Unity driving game by unfreezing time with time.timeScale, revealing the continue button, and resetting finish data and time for each new race.
learn to sculpt an open world track in Unity using terrain tools, adjust terrain settings, apply grass noise textures, and export the terrain to OBJ for further editing.
Sculpt terrain in Unity by adjusting height and brush strength and size, using stamp terrain to form hills and rivers, then export to OBJ for Blender to design roads.
Import the terrain into blender, delete the camera, cube, and light, then create and edit a bezier curve, subdividing and smoothing to form a road that matches the terrain.
Model a concrete barrier for a Unity driving game by using shrink wrap, array, and curve to create geometry, then bevel, assign materials, and raise key faces.
Extend the concrete barrier by adding a new plane, shaping with a Bezier curve, arraying along a curve, and beveling edges, then assign concrete materials for an optimized track barrier.
Learn UV mapping for a road and grass verge by projecting textures from view, using smart UV to separate barrier faces, and exporting as FBX for unity integration.
Bring the track into Unity by importing FBX assets and textures, create open world materials for road, grass, and concrete, and adjust tiling and normals for a cohesive racing terrain.
Shape Unity terrain for a driving game by applying fog and sky lighting with post-processing, then sculpt mountains, rivers, and canyons using stamp terrain and detail brushes.
Add a water lake to the terrain and refine detail with brush size, stamp height, subtract, brush remap, fall off, and smooth height for a driving course in Unity.
Texture the terrain with rock face materials. Paint rock textures using mass maps and normal maps, adjust tiling, and apply concavity masks to emphasize exterior mountain details.
Texture mountains and center rock pieces using terrain brushes, balance dark and light rock faces, apply soil layers, and blend details for a natural driving game environment.
Sculpt terrain, paint soil and rock to form lake and river beds, then add a large water plane with a blue material to create a convincing water feature.
Apply a water normal map and tiling to create waves, animate the water with a looping animator, and refine lighting and cliff rocks for a polished scene.
Choose pine trees with low triangle counts, paint them on terrain with density controls, and add hero trees at larger scales to balance performance and detail.
Set up a Unity driving game scene by creating starting lights as prefabs, wiring car and camera with Cinemachine, adding road colliders, and prepping time-trial and open-world race setups.
Import and configure Azorilla sports car assets in Unity, upgrade materials for HDRP, adjust anisotropy and emission, customize colors and wheels, and prepare prefabs for sky car replacement.
replace the sky car with the black sports car, tune wheel hubs and physics—rear drive, steer helper, top speed, rev range, slip, brake torque—and save as player sports car prefab.
Enable brake lights for non-F1 cars by turning lights on with foot brake. Wire into the car controller, update the prefabs, and adjust wheel slip for grass vs road.
Create progress waypoints along the open-world track using small cubes with box collider triggers and the Progress Waypoint script, duplicating and aligning them to guide the car.
Organize and implement progress waypoints, attach a progress tracker to the car, and integrate the prebuilt UI canvas and minimap to enable race timing and UI feedback.
Set up a mini map camera and UI, assign the target texture, adjust layers, culling mask, and clipping planes, and place a car marker to follow the player.
Learn to add checkpoints in a Unity driving game by placing signs, adding box colliders as triggers for the minimap, tagging the player car, and wiring lap checkpoints.
Attach an activator at the midpoint to trigger next lap and set player finish point with a finish line script and leaderboard to display gold, silver, and bronze times.
Make a complete driving game using Unity.
In this course I will show you how to create your own race tracks in Blender. We will then import into Unity and set up different types of race cars including Formula 1 style and racing cars.
Each car will have its own driving style and you can customise each car in the inspector.
This course will also cover:
Different handling on grass, gravel and road surfaces
Setting up AI cars which will compete against you in race mode.
Checkpoints and lap counting
Keeping track of car positions and displaying finish place at the end of the race
Mini map and mini map markers for all cars
Main menu, race track select menu and a car showroom, so you can buy extra cars.
Choosing different colours for the cars you buy
Leaderboard and race stats
Save system to save your credits and high scores
Race customisation system from the track options menu
Keyboard and gamepad control systems
Terrain sculpting and texturing to add extra details
By the end of this course you will have a complete game that you can continue to develop and add to. You will have also developed the skills to go onto develop your own games.
(Please note this is for computer only, it is not designed for mobile gaming)
I look forward to seeing you in my course.