Unity中如何旋转GameObject时固定其一侧位置?
实现Unity GameObject旋转时固定单侧位置的方法
方法一:调整对象的轴心(Pivot)
- 直接修改模型的轴心到固定端:选中对象后,切换到移动工具(快捷键W),点击顶部工具栏的Pivot/Center按钮选择「Pivot」,再开启「Edit Pivot」(可在Editor Settings中调出该选项),手动拖动轴心到你想固定的那一端位置。
- 更稳妥的方式:如果是导入的模型,建议在建模软件(如Blender、Maya)里把模型原点调整到固定端后再导入Unity,避免Unity内调整轴心可能出现的坐标异常。
方法二:父物体挂载法
- 创建一个空GameObject作为父物体,将它的位置移动到长杆需要固定的那一端位置。
- 把长杆对象设为这个父物体的子物体,调整长杆的局部坐标,让长杆的固定端与父物体位置完全重合。
- 后续旋转父物体即可,长杆会围绕父物体位置(即固定端)旋转,实现固定一端的效果。
方法三:代码动态计算偏移(适合动态切换固定点的场景)
- 核心思路:旋转前记录固定点的世界坐标,旋转后计算偏移量,再将对象移回以保持固定点位置不变。
- 示例代码:
public Transform fixedPoint; // 拖拽长杆固定端的空物体Transform public float rotateSpeed = 30f; void Update() { if (Input.GetMouseButton(0)) { // 记录旋转前固定点的世界位置 Vector3 originalFixedPos = fixedPoint.position; // 执行旋转 transform.Rotate(Vector3.up, rotateSpeed * Time.deltaTime); // 计算偏移并修正位置,让固定点回到原位置 Vector3 offset = originalFixedPos - fixedPoint.position; transform.position += offset; } }
内容的提问来源于stack exchange,提问作者DanielM
相关产品推荐
相关产品推荐

