2025-04-06 12:45:02 +08:00
|
|
|
|
---
|
|
|
|
|
title: 未命名
|
|
|
|
|
date: 2025-04-06 12:14:25
|
|
|
|
|
excerpt:
|
|
|
|
|
tags:
|
|
|
|
|
rating: ⭐
|
|
|
|
|
---
|
|
|
|
|
# 前言
|
|
|
|
|
- UE4.27:https://dev.epicgames.com/documentation/zh-cn/unreal-engine/vehicle-user-guide?application_version=4.27
|
|
|
|
|
- UE5.4:https://dev.epicgames.com/documentation/en-us/unreal-engine/vehicles-in-unreal-engine?application_version=5.4
|
|
|
|
|
|
2025-04-08 11:14:59 +08:00
|
|
|
|
#
|
|
|
|
|
- Vehicle蓝图
|
|
|
|
|
- Vehicle SkeletalMesh
|
|
|
|
|
- Physics Asset
|
|
|
|
|
- Vehicle动画资产
|
|
|
|
|
- 多个Wheel Blueprints.
|
|
|
|
|
- TireConfig Data Asset
|
|
|
|
|
|
|
|
|
|
Vehicle c++项目:
|
|
|
|
|
- AWheeledVehiclePawn -> AVehiclePawn
|
|
|
|
|
- AVehicleOffroadCar
|
|
|
|
|
- AVehicleSportsCar
|
|
|
|
|
-
|
|
|
|
|
|
|
|
|
|
# c++ Vehicle Template
|
|
|
|
|
## AVehiclePawn
|
|
|
|
|
父类为`AWheeledVehiclePawn` -> `APawn`。`AVehiclePawn`的其他派生类为(C++模版实现类):
|
|
|
|
|
- AVehicleOffroadCar:越野车
|
|
|
|
|
- AVehicleSportsCar:跑车
|
|
|
|
|
|
|
|
|
|
## UVehicleWheelFront(前轮)& UVehicleWheelRear(后轮)
|
|
|
|
|
父类为`UChaosVehicleWheel`。两者的差别是:
|
|
|
|
|
- 轴向类型不同。
|
|
|
|
|
- 前轮的转向角度为40度,默认为50度。
|
|
|
|
|
- 前轮的bAffectedBySteering为true,即受到转向系统影响。
|
|
|
|
|
- 后轮的bAffectedByHandbrake、bAffectedByEngine为true,即受到刹车与发动机影响。
|
|
|
|
|
```c++
|
|
|
|
|
UVehicleWheelFront::UVehicleWheelFront()
|
|
|
|
|
{
|
|
|
|
|
AxleType = EAxleType::Front;
|
|
|
|
|
bAffectedBySteering = true;
|
|
|
|
|
MaxSteerAngle = 40.f;
|
|
|
|
|
}
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
```c++
|
|
|
|
|
UVehicleWheelRear::UVehicleWheelRear()
|
|
|
|
|
{
|
|
|
|
|
AxleType = EAxleType::Rear;
|
|
|
|
|
bAffectedByHandbrake = true;
|
|
|
|
|
bAffectedByEngine = true;
|
|
|
|
|
}
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### UVehicleSportsWheel
|
|
|
|
|
```c++
|
|
|
|
|
UVehicleSportsWheelFront::UVehicleSportsWheelFront()
|
|
|
|
|
{
|
|
|
|
|
WheelRadius = 39.0f;
|
|
|
|
|
WheelWidth = 35.0f;
|
|
|
|
|
FrictionForceMultiplier = 3.0f;
|
|
|
|
|
|
|
|
|
|
MaxBrakeTorque = 4500.0f;
|
|
|
|
|
MaxHandBrakeTorque = 6000.0f;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
UVehicleSportsWheelRear::UVehicleSportsWheelRear()
|
|
|
|
|
{
|
|
|
|
|
WheelRadius = 40.f;
|
|
|
|
|
WheelWidth = 40.0f;
|
|
|
|
|
FrictionForceMultiplier = 4.0f;
|
|
|
|
|
SlipThreshold = 100.0f;
|
|
|
|
|
SkidThreshold = 100.0f;
|
|
|
|
|
MaxSteerAngle = 0.0f;
|
|
|
|
|
MaxHandBrakeTorque = 6000.0f;
|
|
|
|
|
}
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### UVehicleOffroadWheel
|
|
|
|
|
```c++
|
|
|
|
|
UVehicleOffroadWheelFront::UVehicleOffroadWheelFront()
|
|
|
|
|
{
|
|
|
|
|
WheelRadius = 50.0f;
|
|
|
|
|
CorneringStiffness = 750.0f;
|
|
|
|
|
FrictionForceMultiplier = 4.0f;
|
|
|
|
|
bAffectedByEngine = true;
|
|
|
|
|
|
|
|
|
|
SuspensionMaxRaise = 20.0f;
|
|
|
|
|
SuspensionMaxDrop = 20.0f;
|
|
|
|
|
WheelLoadRatio = 1.0f;
|
|
|
|
|
SpringRate = 100.0f;
|
|
|
|
|
SpringPreload = 100.0f;
|
|
|
|
|
SweepShape = ESweepShape::Shapecast;
|
|
|
|
|
|
|
|
|
|
MaxBrakeTorque = 3000.0f;
|
|
|
|
|
MaxHandBrakeTorque = 6000.0f;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
UVehicleOffroadWheelRear::UVehicleOffroadWheelRear()
|
|
|
|
|
{
|
|
|
|
|
WheelRadius = 50.f;
|
|
|
|
|
CorneringStiffness = 750.0f;
|
|
|
|
|
FrictionForceMultiplier = 4.0f;
|
|
|
|
|
SuspensionMaxRaise = 20.0f;
|
|
|
|
|
SuspensionMaxDrop = 20.0f;
|
|
|
|
|
WheelLoadRatio = 1.0f;
|
|
|
|
|
SpringRate = 100.0f;
|
|
|
|
|
SpringPreload = 100.0f;
|
|
|
|
|
SweepShape = ESweepShape::Shapecast;
|
|
|
|
|
|
|
|
|
|
MaxBrakeTorque = 3000.0f;
|
|
|
|
|
MaxHandBrakeTorque = 6000.0f;
|
|
|
|
|
}
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## AVehiclePlayerController
|
|
|
|
|
父类为APlayerController。
|
|
|
|
|
|
|
|
|
|
1. 添加UI与UI更新逻辑。
|
|
|
|
|
2. 绑定增强输入组件。
|
|
|
|
|
3. OnPossess()绑定AVehiclePawn。
|
|
|
|
|
|
|
|
|
|
## UChaosWheeledVehicleMovementComponent
|
|
|
|
|
|
|
|
|
|
## 动画蓝图中的相关逻辑
|