Unreal
- 🚀 Unreal Engine - UProjectileMovementComponent
- 🏷 定义
- 🧩 类继承关系
- ⚙️ 关键特性
- 🛠️ 常见配置
- 📝 使用方法
- 1) 在 Actor 中添加组件
- 2) 发射时设置方向
- 3) 绑定事件
- 📚 典型应用场景
- 🔁 与其他组件对比
- 📦 小结
🚀 Unreal Engine - UProjectileMovementComponent
🏷 定义
- UProjectileMovementComponent 是 专门为子弹/投掷物/魔法弹等抛射体设计的移动组件。
- 它会在每帧根据速度、重力、碰撞等参数自动更新位置和方向。
- 特点:自动飞行、可配置重力/弹跳/摩擦、支持事件回调。
🧩 类继承关系
UObject└── UActorComponent└── UMovementComponent└── UProjectileMovementComponent
- UMovementComponent:所有移动组件的基类,负责位置更新与碰撞处理。
- UProjectileMovementComponent:扩展了速度、重力、弹跳等专用于抛射物的逻辑。
⚙️ 关键特性
- 速度驱动
InitialSpeed
:初始发射速度。MaxSpeed
:最大速度上限。Velocity
:当前速度向量,可随时修改。
- 方向与旋转
bRotationFollowsVelocity
:是否让 Actor 自动朝速度方向旋转。bInitialVelocityInLocalSpace
:是否使用局部空间方向作为初速度。
- 重力影响
ProjectileGravityScale
:重力缩放系数(0 = 无重力)。
- 弹跳与摩擦
bShouldBounce
:是否启用反弹。Bounciness
:弹性系数(0~1)。Friction
:摩擦系数,控制反弹后速度衰减。
- 生命周期
- 可通过 Actor 的
InitialLifeSpan
设置生存时间,到期自动销毁。
- 事件
OnProjectileStop
:投射物停止时触发。OnProjectileBounce
:发生弹跳时触发。
🛠️ 常见配置
InitialSpeed = 3000.f
MaxSpeed = 3000.f
ProjectileGravityScale = 1.f
(默认有重力,可改成 0)bShouldBounce = true
(是否启用弹跳)Bounciness = 0.3f
(反弹时保留速度比例)
📝 使用方法
1) 在 Actor 中添加组件
UPROPERTY(VisibleAnywhere, Category="Movement")
UProjectileMovementComponent* ProjectileMovement;
ProjectileMovement = CreateDefaultSubobject<UProjectileMovementComponent>(TEXT("ProjectileMovement"));
ProjectileMovement->InitialSpeed = 3000.f;
ProjectileMovement->MaxSpeed = 3000.f;
ProjectileMovement->bRotationFollowsVelocity = true;
ProjectileMovement->ProjectileGravityScale = 0.f;
2) 发射时设置方向
void AMyProjectile::FireInDirection(const FVector& ShootDir)
{ProjectileMovement->Velocity = ShootDir * ProjectileMovement->InitialSpeed;
}
3) 绑定事件
ProjectileMovement->OnProjectileBounce.AddDynamic(this, &AMyProjectile::OnBounce);
ProjectileMovement->OnProjectileStop.AddDynamic(this, &AMyProjectile::OnStop);
void AMyProjectile::OnBounce(const FHitResult& ImpactResult, const FVector& ImpactVelocity)
{UE_LOG(LogTemp, Warning, TEXT("Projectile bounced!"));
}void AMyProjectile::OnStop(const FHitResult& ImpactResult)
{Destroy();
}
📚 典型应用场景
- 🔫 子弹/火箭弹:高速直线飞行,可带重力或无重力。
- 💣 手雷/投掷物:受重力影响,形成抛物线。
- 🔮 魔法技能:火球、冰锥,可开启弹跳与特效。
- 🎯 AI 投射物:怪物发射的石头、毒液、能量波。
🔁 与其他组件对比
组件 | 特点 | 适用场景 |
---|
UFloatingPawnMovement | 输入驱动,悬浮式移动,不受重力 | 玩家飞行器/观战相机 |
UCharacterMovementComponent | 完整步行/跳跃/地面逻辑 | 玩家/NPC角色 |
UProjectileMovementComponent | 自动运动,支持重力/反弹,专为抛射物设计 | 子弹/手雷/魔法弹 |
URotatingMovementComponent | 固定角速度旋转 | 机关/旋转装饰 |
📦 小结
- UProjectileMovementComponent = 抛射物的飞行控制器
- ✅ 自动更新位置与方向
- ✅ 支持速度、重力、弹跳、摩擦
- ✅ 自带事件(Bounce/Stop)方便逻辑扩展
- ✅ 适合子弹、火箭、手雷、魔法等所有“飞出去的东西”