Minimal Bus Setup
The goal of the minimal bus setup is to be able to drive the bus in engine. This is the base functionality of the bus and more features can be added later.
This section expects that you have a bus mesh with at least the basic skeleton setup and have setup a plugin for your bus.
Add reference content to plugin
We provide two buses as starting point for your bus, one normal bus and one bendy bus. Use the one that is suitable for your bus as reference and copy the "Setup Data Asset", the "Mod Info" and the bus blueprint, usually called VH_Manufacturer_BusModel, to your plugin folder.
Â
Import your bus
Import the bus mesh by clicking the import button in the content browser or by dropping it into the plugin folder in of your bus in the content browser.
Use these import settings:
Â
Check if the skeleton was correctly imported
It is very important that the bus skeleton is setup in a specific way. The bus will not be drive able if the skeleton deviates from how unreal expects it.
Check if the skeleton fulfills the following criteria:
The root bone is at the center of the bus.
The root bone must not have any parent bones. It needs to be the root to all other bones.
The root bone has a location of 0,0,0, a rotation of 0,0,0 and a scale of 1,1,1. Small floating point deviations are fine, but it can easily happen, that the root bone comes with a 90° rotation or a scale is at 100 from your moddeling program, with those offsets you will not be able to drive the bus
The tire bones need to be direct children of the root bone
The tire bones need to have a specific orientation: X forward, Y right, Z up
 |
Â
Setup the bus blueprint for the new mesh
Open the blueprint you copied over to your plugin and replace the skeletal mesh used on the "Mesh" root component with the skeletal mesh you just imported. This should allow you to see your bus in the viewport of the blueprint.
Scroll down in the "Components" window until you find the "VehicleMovement (Inherited)" component
Select it and search for the "Wheel Setups" list in the details
Expand the list and check if the "Bone Name" entries correspond with the bone names in the skeleton of your bus, if not change the entries to the ones used in your skeleton.
Check if the parent sockets of the wheel static meshes are set to the wheel bones of the bus
 |
Physics Asset
The minimal bus physics asset will only enable the bus to drive, it will be extended in the full bus setup.
The physics asset for the bus was created on import. Unreal automatically creates some colliders for you, but they are not needed and you can delete the to get a clean physics asset.
After deleting all colliders add a box collider to the root and a sphere collider to each wheel. For the initial setup the don't need to fit the bus perfectly yet, but we recommend, that you setup your root collider as bus floor collider. The game checks if you are inside a bus by checking what is below you. Certain actions, like boarding the bus, are only active if the game thinks your are inside a bus.
On the box colliders attached to the root, make sure under Collision the Simulation Generates Collision Events is checked.
Root bone collider settings
Enable Gravity | true |
Physics Type | Default |
Simple Collision Physics Material | PM_Bus |
Collision Response | true |
Wheel bone collider settings
Enable Gravity | true |
Physics Type | Kinematic |
Simple Collision Physics Material | None |
Collision Response | false |
Setup bus boarding point
We use a bone location to mark the boarding point to the bus, in most buses we use the DriverDoor bone.
If you already have the full skeleton setup done you can skip to the connect bone to action step.
Add socket as boarding point
In the skeleton asset of the bus add a socket to the root bone and give it a name like "DriverDoor" or "BoardingInteractible".
Move this bone to the cockpit area so you can board by interacting with the boarding area.
Connect bone to action
We need to tell the bus that if a user interacts with a specific bone it should trigger a specific action, in this case if the user interacts with the cockpit area it should trigger the boarding action and allow the user to drive the bus.
To set this up open the bus blueprint and search for the SkeletalMeshInteractible component in the components window. You will see there are already a couple mappings between bone name and interaction setup. Either add a new entry or edit an existing one, type the name of the bone/socket into the textbox and select "InteractibleType_BusBoarding" as interactible type.
Testing and Troubleshooting
Testing if the minimal setup works if fairly straight forward:
drag you bus blueprint into the test scene
press play
check if you can board and drive the bus
If you can you are good to go and can continue to the full bus setup.
Troubleshooting
The bus is floating in the air and can't be interacted with
check in the skeletal mesh asset, if the physics asset is set to the one you prepared
check if the root as well as the wheels have colliders setup
many errors are connected to the incorrect skeletons, check the checklist again to see if everything is setup correctly
check if the wheel setup in the Vehicle Movement component references the correct bones
The bus sits nicely on the floor, but you can't board it
check if the bus boarding interactible is correctly setup
check your collider setup, you can only board the bus when the game thinks you are inside a bus. Make the root collider you created before into a floor collider, once the game sees a bus below your feet it will allow you to board a bus.
Next Step
Â