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
- ✅ 可切换 本地/世界旋转
- ✅ 适合风扇、机关、装饰性循环旋转