urotatingmovementcomponent

URotatingMovementComponent

🌀 Unreal Engine - URotatingMovementComponent


🏷 定义

  • URotatingMovementComponent专门用于让 Actor 或组件持续旋转的移动组件
  • 它会在每帧自动更新旋转角度,支持 固定速率旋转绕枢轴点旋转
  • 特点:即插即用、无需手写 Tick、支持世界/本地旋转

🧩 类继承关系

UObject

└── UActorComponent

  └── USceneComponent

       └── UMovementComponent

            └── URotatingMovementComponent

  • UMovementComponent:移动组件基类,管理 Actor/组件的更新。
  • URotatingMovementComponent:扩展为 持续旋转运动 的逻辑。

⚙️ 关键特性

  • 固定旋转速率
    • RotationRate:每秒旋转角度(Pitch/Yaw/Roll)。
  • 旋转空间
    • bRotationInLocalSpace:是否使用本地坐标系旋转。
      • true → 本地旋转(相对于自身方向)。
      • false → 世界旋转。
  • 旋转枢轴
    • PivotTranslation:旋转中心点的偏移量(相对于 Actor 原点)。
  • 物理兼容
    • 可作用于非物理模拟的组件/Actor。
    • 若组件开启 Simulate Physics,则需通过物理力旋转而非该组件。

🛠️ 常见配置

  • RotationRate = (0.f, 180.f, 0.f) → 每秒绕 Yaw 轴旋转 180°
  • bRotationInLocalSpace = true → 按局部方向旋转
  • PivotTranslation = FVector(200, 0, 0) → 物体绕前方 200 单位的点旋转

📝 使用方法

1) 在 Actor 中添加组件

1
2
3
// MyRotatingActor.h
UPROPERTY(VisibleAnywhere, Category="Movement")
URotatingMovementComponent* RotatingMovement;
1
2
3
4
// MyRotatingActor.cpp
RotatingMovement = CreateDefaultSubobject<URotatingMovementComponent>(TEXT("RotatingMovement"));
RotatingMovement->RotationRate = FRotator(0.f, 180.f, 0.f); // 每秒旋转 180°
RotatingMovement->bRotationInLocalSpace = true;

2) 蓝图用法

  • 在 Actor 蓝图中 添加 RotatingMovementComponent
  • 设置 RotationRate → 控制旋转速度。
  • 设置 PivotTranslation → 控制旋转中心。
  • 勾选 RotationInLocalSpace → 本地旋转。

📚 典型应用场景

  • 🌪️ 风扇/螺旋桨:持续旋转。
  • 🎡 摩天轮/转盘:绕固定点转动。
  • ⚙️ 齿轮/机械零件:循环旋转。
  • 🌍 装饰物体/能量球:让环境更生动。

🔁 与其他组件对比

组件特点适用场景
UFloatingPawnMovement输入驱动,悬浮式移动,不受重力玩家飞行器/观战相机
UCharacterMovementComponent完整步行/跳跃/地面逻辑玩家/NPC角色
UProjectileMovementComponent自动运动,支持重力/反弹,专为抛射物设计子弹/手雷/魔法弹
URotatingMovementComponent固定角速度旋转风扇/齿轮/旋转装饰

📦 小结

  • URotatingMovementComponent = 自动旋转控制器
  • ✅ 无需 Tick,每帧自动旋转
  • ✅ 支持 RotationRate + PivotTranslation
  • ✅ 可切换 本地/世界旋转
  • ✅ 适合风扇、机关、装饰性循环旋转