Unity的旋转问题

1. pivot 和 center

  pivot 是模型坐标的真实位置,开发中改变transform的角度指的是这个。

  center是当有多个模型的时候,unity自动根据mesh计算的共同中心,只有一个模型的时候不受影响。


2.万向节死锁

  只有在local模式才会发生

  其坐标层级是  y->x->z (y是最高层级,不受x,z 影响,x受y影响,同时影响z,z受y,x影响)

  故只有绕x轴先转(+/-)90度(仰视/俯视)才会触发失去绕Z轴旋转的自由度,造成万向节死锁。 完全的俯视和央


 3.四元数

      绕某个轴旋转一个角度。

   

   在u3d下利用该方法实现地球自转:

   


### Unity 中 Pivot 的概念及相关操作 在 Unity 的场景编辑器中,Pivot 是对象旋转、缩放和其他换的核心点。它定义了一个 GameObject 在空间中的锚定点位置[^1]。 #### 什么是 Pivot? Pivot 表示游戏物体的中心点或原点,在此点上应用所有的换操作(如平移、旋转和缩放)。默认情况下,Unity 创建的对象会将其 Pivot 设置在其几何体的中心处。然而,对于某些特定需求(比如 UI 元素或者复杂的模型),可能需要调整 Pivot 来适应不同的设计目标[^2]。 #### 如何修改 Pivot? 可以通过以下几种方式来改一个对象的 Pivot: 1. **通过父级容器设置** 如果希望某个子对象拥有独立于其本身形状之外的一个特殊枢,则可以创建一个新的空 Game Object 并作为该子对象的新 Parent 对象。接着移动这个新 Parent 到期望的位置即可实现自定义 Pivot 效果[^3]。 2. **使用 Sprite Editor 工具 (针对精灵)** 当处理二维图像资源时,可以直接进入 `Sprite Editor` 面板重新指定图片内部像素级别的 Pivot 定位。选中相应纹理后点击右键菜单下的 “Edit in Sprite Editor”,之后拖拽蓝色十字标记到理想坐标完成设定[^4]。 3. **脚本编程控制** 下面是一个简单的 C# 示例代码片段展示如何动态更改 Transform 组件上的局部位置从而间接影响视觉效果层面所呈现出来的实际 Pivot 点表现形式: ```csharp using UnityEngine; public class ChangePivot : MonoBehaviour { public Vector3 newPivotPosition; void Start() { RectTransform rectTransform = GetComponent<RectTransform>(); if(rectTransform != null){ // 将新的 Pivot 值赋给当前 RectTransform. rectTransform.pivot = new Vector2(newPivotPosition.x, newPivotPosition.y); } } } ``` 上述例子适用于 Canvas 上基于 UGUI 构建的内容结构下调整控件布局行为模式的需求情境之中[^5]。 #### 注意事项 当频繁切换不同状态之间可能会遇到一些意外情况发生,因此建议始终保留原始备份副本以防万一出现问题能够迅速恢复至初始条件之下继续工作下去[^6]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值