127 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			127 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
---
 | 
						||
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
 | 
						||
 | 
						||
 | 
						||
## 动画蓝图中的相关逻辑 |