# Truck Town
This is a demo implementing different types of trucks of
varying complexity using vehicle physics.
Controls:
- Up Arrow, W, Gamepad Right Trigger, Gamepad A/Cross: Accelerate
- Down Arrow, S, Gamepad Left Trigger, Gamepad B/Circle, Gamepad X/Square: Brake/reverse
- Left Arrow, Gamepad Left Stick, Gamepad D-Pad Left: Steer left
- Right Arrow, Gamepad Left Stick, Gamepad D-Pad Right: Steer right
- U, Gamepad Select, left-click speedometer: Change speedometer unit (m/s, km/h, mph)
- C, Gamepad Y/Triangle: Change camera (exterior, interior, top-down)
- Escape, Gamepad D-Pad Up: Go back to menu (press again to exit)
On mobile platforms, the vehicle automatically accelerates. Touch the left and
right edges of the screen to steer. Touch the middle of the screen to
brake/reverse (this also temporarily stops acceleration).
Language: GDScript
Renderer: Forward+ on desktop, Mobile on mobile
Check out this demo on the asset library: https://godotengine.org/asset-library/asset/524
## How does it work?
The base vehicle uses a
[`VehicleBody`](https://docs.godotengine.org/en/latest/classes/class_vehiclebody.html)
node. The trailer truck is tied together using a
[`ConeJointTwist`](https://docs.godotengine.org/en/latest/classes/class_conetwistjoint.html)
node, and the tow truck is tried together using a chain made of
[`RigidBody`](https://docs.godotengine.org/en/latest/classes/class_rigidbody.html)
nodes which are pinned together using
[`PinJoint`](https://docs.godotengine.org/en/latest/classes/class_pinjoint.html) nodes.
## Screenshots
![Screenshot](screenshots/truck_town.webp)