C# 在unity脚本中,如何;轮换;及;旋转到“;绕枢轴位置

C# 在unity脚本中,如何;轮换;及;旋转到“;绕枢轴位置,c#,unity3d,C#,Unity3d,在unity编辑器中,当我启用“轴”时,游戏对象将围绕“轴点”位置旋转,当我启用“中心”时,游戏对象将围绕“中心点”旋转 但如果我使用脚本旋转,它总是围绕“中心点”旋转,例如,这里是我的场景: 我使用以下代码: void Start() { // transform.rotation = Quaternion.Euler(new Vector3(0, 0, 90)); transform.RotateAround(transform.positio

在unity编辑器中,当我启用“轴”时,游戏对象将围绕“轴点”位置旋转,当我启用“中心”时,游戏对象将围绕“中心点”旋转

但如果我使用脚本旋转,它总是围绕“中心点”旋转,例如,这里是我的场景:

我使用以下代码:

    void Start()
    {
//        transform.rotation = Quaternion.Euler(new Vector3(0, 0, 90));
        transform.RotateAround(transform.position, new Vector3(0, 0, 1), 90);
    }
transform.rotation = Quaternion.Euler(new Vector3(0, 0, 90))
它围绕“中心点”旋转

如果对象有碰撞器,我可以使用colider.bounds获取轴心点,如果没有,我应该怎么做?

更糟糕的是,在某些情况下,我希望旋转到,就像unity editor inspector中的set rotate一样,我使用以下代码:

    void Start()
    {
//        transform.rotation = Quaternion.Euler(new Vector3(0, 0, 90));
        transform.RotateAround(transform.position, new Vector3(0, 0, 1), 90);
    }
transform.rotation = Quaternion.Euler(new Vector3(0, 0, 90))
我不知道如何调整上面的代码来围绕轴心点旋转

更新


我想如果我可以“旋转”,我也可以实现“旋转到”,所以关键点是,我应该如何获得RotateRound中使用的“轴心点”,如果对象有碰撞器,我可以使用colider.bounds和transform.position获得,对于没有碰撞器的对象,我该怎么做?

轴心点与您正在使用的
变换位置相同。如果不喜欢轴点所在的位置或旋转所针对的位置,则有两个选项:

1。创建新的空游戏对象。将其移动到您希望游戏对象旋转的位置。一旦你对这个位置感到满意,就把这个新的游戏对象变成你将要旋转的游戏对象的子对象。使用这个新游戏对象的位置作为
transform.RotateAround
函数的轴心旋转点

将空游戏对象拖动到下面脚本中的
customPivot
槽中。这应该给你一个新的轴心点来旋转你的游戏对象

public Transform customPivot;

void Update()
{
    transform.RotateAround(customPivot.position, Vector3.up, 20 * Time.deltaTime);
}
2。打开一个3D应用程序并更改对象的轴心点,然后保存并将其重新导入Unity


因为这只是用来旋转对象,所以我建议#1。如果问题是轴心点没有居中,我建议#2

围绕轴心点旋转相当于:1。平移对象,使对象的中心位于轴点上(记住相对于对象空间的平移T)2。围绕中心3旋转对象。使用T^-1(相对于对象空间)向后平移