This project is a Unity-based Racing Simulation Game featuring AI-controlled vehicles and dynamic physics.
I served as Project Manager and Core Developer, independently implementing all control scripts, AI logic, and debugging tasks (3D modeling by teammates).
The system integrates computer graphics, physics simulation, and AI pathfinding techniques, aiming to:
- Design realistic tracks and scenes using Unity and Maya
- Simulate vehicle physics including wheel colliders and suspension systems
- Implement AI Pathfinding with cubic Bézier curves for route generation
- Support multiple camera perspectives — third-person, side, and aerial views
- Track Modeling: Maya polygon subdivision → curve sculpting → shrink wrap → vertex optimization
- Scene Integration: Import models into Unity → add colliders → apply materials and lighting
- Physics Engine: Utilize
WheelColliderto simulate wheel friction and suspension - Control Scripts: Use
InputManagerfor unified input handling;CarMoveControlmanages steering, acceleration, and braking.// Steering logic example (partial code) float steerAngle = Mathf.Rad2Deg * Mathf.Atan(2.5f / radius); wheels[0].steerAngle = steerAngle;
- Camera Follow System: Achieved smooth transitions via
LateUpdate()
-
Path Generation: Dynamically generated driving routes using cubic Bézier curves.

-
Tracking Logic: Implemented a Tracker system that precomputes path points and enables the AI vehicle to follow the route in real time.
Demo Note: The AI pathfinding module was successfully developed and tested in a demo version. However, due to collider conflicts between imported teammate models, the vehicle experienced slight vibration during simulation. To ensure runtime stability, this module was not integrated into the final release (car.exe). (See demo video: AI+BezierCurve.mp4 )
-
Issue: Gaps appeared in the racetrack model exported from Maya
-
Solution:
-
Manually merged vertices
-
Repeated “Average Vertex” and “Shrink Wrap” operations for correction
-
-
Issue: Vehicle instability during high-speed movement
-
Solution:
-
Moved physics calculations to
FixedUpdate() -
Moved camera tracking logic to
LateUpdate()to decouple from physics updates
-
This project successfully implemented core functions of a racing simulation game in Unity, providing valuable insights in the following areas:
-
Technical Aspects: Gained in-depth understanding of physics engine tuning and Bézier curve applications in gameplay.
-
Collaboration: Highlighted the importance of modular design and version control.
-
Optimization: In order to balance system performance, although AI path-finding system had successfully tested in my local environment, our team still chose not to install it into final build, since the uncontrollable shaking remained, and we made a vedio demo instead.
The demo is developed and built in Unity 2022.3.
You can open the project in Unity and run it directly from the editor.
Alternatively, a compiled version (car.exe) is available in the Release section for quick preview.
