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
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								## 动画蓝图中的相关逻辑
							 |