当前位置: 首页 > news >正文

Unreal Engine UProjectileMovementComponent

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 中添加组件

// MyProjectile.h
UPROPERTY(VisibleAnywhere, Category="Movement")
UProjectileMovementComponent* ProjectileMovement;
// MyProjectile.cpp
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)方便逻辑扩展
  • ✅ 适合子弹、火箭、手雷、魔法等所有“飞出去的东西”

http://www.xdnf.cn/news/1348741.html

相关文章:

  • 异步开发的三种实现方式
  • Unreal Engine USceneComponent
  • Unreal Engine Simulate Physics
  • 线段树01
  • 20250822 组题总结
  • 如何解决pip安装报错ModuleNotFoundError: No module named ‘uvicorn’问题
  • 北京-测试-入职甲方金融-上班第三天
  • 嵌入式第三十五天(网络编程(UDP))
  • GPS欺骗式干扰的产生
  • DSPy框架:从提示工程到声明式编程的革命性转变
  • 声网SDK更新,多场景抗弱网稳定性大幅增强
  • GaussDB GaussDB 数据库架构师修炼(十八)SQL引擎(1)-SQL执行流程
  • week3-[二维数组]小方块
  • ArrayList线程不安全问题及解决方案详解
  • 硬件驱动---linux内核驱动 启动
  • 云原生俱乐部-k8s知识点归纳(7)
  • RCE的CTF题目环境和做题复现第4集
  • Unreal Engine UActorComponent
  • base64认识实际使用
  • #Datawhale 组队学习#8月-工作流自动化n8n入门-2
  • LLM实践系列:利用LLM重构数据科学流程01
  • 简单聊聊多模态大语言模型MLLM
  • LeetCode100 -- Day4
  • RCE的CTF题目环境和做题复现第3集
  • RoboTwin--CVPR2025--港大--2025.4.17--开源
  • 大模型微调训练资源占用查询:Windows 10 查看 NVIDIA 显卡GPU状态教程(替代 Ubuntu 下 watch nvidia-smi)
  • Python精确小数计算完全指南:从基础到金融工程实践
  • 二、高可用架构(Nginx + Keepalived + MySQL 主从)
  • StarRocks启动失败——修复全流程
  • AI生成技术报告:GaussDB与openGauss的HTAP功能全面对比