127 lines
3.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
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
# 项目结构
- 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;//实现4轮驱动
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)
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
## 动画蓝图中的相关逻辑