You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

操作对象时如何冻结其Y轴旋转?

冻结对象Y轴旋转的实现方法

不同3D开发环境的实现方式略有不同,以下是几种常见场景的解决方案:

Unity

  • 直接通过组件约束:选中目标对象,在Inspector面板的Transform组件中,点击右上角齿轮图标,勾选Freeze Rotation下的Y轴复选框,即可锁定Y轴旋转,运行时该轴旋转不会被修改。
  • 代码动态控制:如果需要在运行时动态固定Y轴旋转,可在脚本的Update方法中强制保留Y轴的固定值:
void Update()
{
    // 保留当前X、Z轴旋转,将Y轴固定为0(可替换为你需要的角度)
    transform.rotation = Quaternion.Euler(transform.rotation.eulerAngles.x, 0f, transform.rotation.eulerAngles.z);
}
  • 物理对象约束:若对象带有Rigidbody组件,在Constraints选项中勾选Freeze Rotation的Y轴,物理交互时也不会绕Y轴旋转。

Unreal Engine

  • 组件面板设置:选中目标Actor或Mesh组件,在Details面板的Transform栏中找到Rotation Lock,勾选Y轴;物理对象可在Physics > Constraints中开启Freeze Rotation的Y轴选项。
  • 蓝图/代码控制:
    蓝图逻辑:在Tick事件中获取当前旋转,拆分Rotator后固定Yaw值,再重新设置Actor旋转。
    C++代码示例:
void AYourActor::Tick(float DeltaTime)
{
    Super::Tick(DeltaTime);
    FRotator CurrentRot = GetActorRotation();
    CurrentRot.Yaw = 0.0f; // 固定Y轴旋转角度
    SetActorRotation(CurrentRot);
}

Three.js(Web 3D)

在动画循环中强制固定对象的Y轴旋转值:

function animate() {
    requestAnimationFrame(animate);
    
    // 固定Y轴旋转为0(可替换为自定义角度)
    object.rotation.y = 0;
    
    renderer.render(scene, camera);
}

通用逻辑

无论使用哪种框架,核心思路都是两种:

  • 利用引擎自带的约束功能,直接锁定Y轴的旋转自由度;
  • 在对象的更新周期中,强制将Y轴旋转值设置为固定值,覆盖任何可能的旋转修改。

内容的提问来源于stack exchange,提问作者Hitakshi Dobariya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 18:35:23