【发布时间】:2018-10-10 09:46:56
【问题描述】:
在统一编辑器中,当我启用“枢轴”时,游戏对象将围绕“枢轴点”位置旋转,当我启用“中心”时,游戏对象将围绕“中心点”旋转
但如果我使用脚本旋转,它总是围绕“中心点”旋转,例如,这是我的场景:
我使用以下代码:
void Start()
{
// transform.rotation = Quaternion.Euler(new Vector3(0, 0, 90));
transform.RotateAround(transform.position, new Vector3(0, 0, 1), 90);
}
它围绕“中心点”旋转
如果物体有碰撞器,我可以用 colider.bounds 获得轴心点,如果没有,我应该怎么做?
更糟糕的是,在某些情况下,我希望旋转到就像在统一编辑器检查器中设置旋转一样,我使用以下代码:
transform.rotation = Quaternion.Euler(new Vector3(0, 0, 90))
我不知道调整上面的代码以围绕枢轴点旋转
更新
我认为如果我可以“旋转”,我也可以实现“旋转到”,所以关键是,我应该如何获得 RotateAround 中使用的“枢轴点”,对象有碰撞器,我可以得到colider.bounds with transform.position,到没有collider对象,我该怎么办?
【问题讨论】:
-
围绕轴心点旋转相当于: 1. 平移对象,使对象的中心位于轴心点上(并记住相对于对象空间的平移 T) 2. 围绕中心旋转对象 3. 平移返回使用 T^-1(相对于对象空间)