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

Unity C#实现3D预制体绕自身轴按A键旋转90度问题求助

解决Unity预制体绕自身中心旋转的问题

你的核心问题是错误地单独旋转每个子物体,导致每个子物体绕自身轴/世界轴旋转,而非让整个预制体(父物体)绕自身中心旋转。Unity编辑器的Rotate Tool本质是直接操作父物体的Transform组件,子物体会自动继承父物体的旋转,从而实现绕父物体中心旋转的效果。

修正后的代码

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class RotatePrefab : MonoBehaviour
{
    // 预制体的父物体
    public GameObject parentObject;

    void Update()
    {
        // 按下A键时触发旋转
        if (Input.GetKeyDown(KeyCode.A))
        {
            if (parentObject != null)
            {
                // 直接旋转父物体的Y轴,顺时针向右转90度
                // 注:Unity右手坐标系中,Y轴正方向为逆时针旋转,顺时针需用负角度
                parentObject.transform.Rotate(0f, -90f, 0f, Space.Self);
                // 如果你的"向右旋转"需要正角度,可改为0f, 90f, 0f,根据实际视角调整
            }
            else
            {
                Debug.LogError("未指定父物体!");
            }
        }
    }
}

关键说明

  • 直接旋转父物体:父物体的Transform旋转会带动所有子物体同步旋转,子物体会以父物体的轴心为旋转中心,完全复刻Rotate Tool的效果。
  • Space.Self vs Space.World:使用Space.Self表示绕父物体自身的Y轴旋转,而非世界Y轴,更符合"绕自身轴旋转"的需求;若需固定绕世界Y轴旋转,可保留Space.World。
  • 角度方向:Unity采用右手坐标系,Y轴正方向旋转是逆时针(从Y轴正方向向下看),若需要顺时针向右旋转,使用-90f即可,可根据实际场景视角调整正负值。

内容的提问来源于stack exchange,提问作者Cirill Parnó

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 02:47:38