当前位置: 首页 > 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.dtcms.com/a/343749.html

相关文章:

  • 如何生成网关路由表
  • clickhouse实战(二)
  • 关于爬虫的基本步骤说明【爬虫七步骤】
  • AI适老服务暖人心:AI适老机顶盒破数字鸿沟、毫米波雷达护独居安全,银发生活新保障
  • 大模型压缩三剑客:量化、剪枝与知识蒸馏全解析
  • Logstash——安全与权限管理
  • Swift 项目结构详解:构建可维护的大型应用
  • 【Feed-forward optimization】 in Visual Geometry Grounded and 3DGS
  • Matrix-Zero:昆仑万维发布的AI世界模型,支持单张图生成3D世界
  • (纯新手教学)计算机视觉(opencv)实战七——边缘检测Sobel 算子(cv2.Sobel())详解
  • ⭐CVPR2025 无约束 3D 视线估计新框架[特殊字符]
  • 【图像算法 - 21】慧眼识虫:基于深度学习与OpenCV的农田害虫智能识别系统
  • Python opencv识别图片中重叠圆的圆心位置
  • 焊接工艺仿真软件SYSWELD、Simufact.Welding和FLOW-3D WELD的区别
  • 【0基础3ds Max】捕捉工具详解
  • 城市生命线地下管网三维建模软件MagicPipe3D更新历史
  • ZBrush和3D-Coat如何实现快速桥接?
  • `git mv` 重命名 Git 仓库中的文件夹
  • OFSP路由与传输层协议
  • LLM实践系列:利用LLM重构数据科学流程
  • 亚矩阵云手机:亚马逊第三方店铺多账号安全合规运营的核心技术支撑
  • 代码随想录Day59:图论(最短路算法dijkstra堆优化版精讲、Bellman_ford 算法精讲)
  • 【生成树+环】题解:P3907 环的异或_图论_环_异或_搜索_算法竞赛_C++
  • 【typenum】 22 类型级别二进制对数运算(Logarithm2)
  • Apache Ozone 介绍与部署使用(最新版2.0.0)
  • Vue2+Vue3前端开发_Day6
  • Spring-AI初级使用记录 spring-ai-bom版本1.0.1-(单、多轮对话)
  • reactive 核心要点
  • FFmpeg及 RTSP、RTMP
  • 大型前端项目如何实现css 隔离:利用浏览器原生的 Shadow DOM 完全隔离 DOM 结构与样式...