127 lines
3.4 KiB
Markdown
Raw Permalink Normal View History

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-09 21:56:03 +08:00
# 项目结构
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;
2025-04-09 21:56:03 +08:00
FrictionForceMultiplier = 3.0f;//摩擦力系数
2025-04-08 11:14:59 +08:00
2025-04-09 21:56:03 +08:00
MaxBrakeTorque = 4500.0f;//最大制动扭矩
MaxHandBrakeTorque = 6000.0f;//最大手制动扭矩
2025-04-08 11:14:59 +08:00
}
UVehicleSportsWheelRear::UVehicleSportsWheelRear()
{
WheelRadius = 40.f;
WheelWidth = 40.0f;
2025-04-09 21:56:03 +08:00
FrictionForceMultiplier = 4.0f;
SlipThreshold = 100.0f;//滑动阈值
SkidThreshold = 100.0f;//防滑阈值
MaxSteerAngle = 0.0f;//最大转向角
MaxHandBrakeTorque = 6000.0f;
2025-04-08 11:14:59 +08:00
}
```
### UVehicleOffroadWheel
```c++
UVehicleOffroadWheelFront::UVehicleOffroadWheelFront()
{
WheelRadius = 50.0f;
2025-04-09 21:56:03 +08:00
CorneringStiffness = 750.0f;//转弯刚度
2025-04-08 11:14:59 +08:00
FrictionForceMultiplier = 4.0f;
2025-04-09 21:56:03 +08:00
bAffectedByEngine = true;//实现4轮驱动
2025-04-08 11:14:59 +08:00
2025-04-09 21:56:03 +08:00
SuspensionMaxRaise = 20.0f;//悬挂架最大提升高度(父类是10.0)
SuspensionMaxDrop = 20.0f;//悬挂力最大下降(父类是10.0)
WheelLoadRatio = 1.0f;//车轮负载率(父类是0.5)
SpringRate = 100.0f;//弹簧率(父类是250.0)
SpringPreload = 100.0f;//弹簧预紧力(父类是50.0)
2025-04-08 11:14:59 +08:00
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
2025-04-09 21:56:03 +08:00
2025-04-08 11:14:59 +08:00
## 动画蓝图中的相关逻辑