Unity3d 统一-围绕二维中的点旋转对象

Unity3d 统一-围绕二维中的点旋转对象,unity3d,rotation,2d,Unity3d,Rotation,2d,我一直在为Unity制作一个2D游戏,我需要找到一种方法来围绕某个点旋转一个精灵。我知道,对于3D游戏,Unity有一个内置的transform.RotateAround()函数,但我不确定如何实现2D等效功能。如果有人能提供帮助,我们将不胜感激。您可以使用相同的功能transform.RotateAround()采用Vector3点、Vector3轴和浮动角度,单位为度 点和角度是非常自我暗示的,但轴则不那么自我暗示。这基本上是旋转的方向。在默认的Unity2D游戏中,z是你的深度(进入屏幕)

我一直在为Unity制作一个2D游戏,我需要找到一种方法来围绕某个点旋转一个精灵。我知道,对于3D游戏,Unity有一个内置的
transform.RotateAround()
函数,但我不确定如何实现2D等效功能。如果有人能提供帮助,我们将不胜感激。

您可以使用相同的功能
transform.RotateAround()
采用
Vector3点
Vector3轴
浮动角度
,单位为度

点和角度是非常自我暗示的,但轴则不那么自我暗示。这基本上是旋转的方向。在默认的Unity2D游戏中,z是你的深度(进入屏幕),你需要绕z轴旋转:
newvector3(0,0,1)
Vector3.forward

尝试以下方法:

Vector3 point = new Vector3(5,0,0);
Vector3 axis = new Vector3(0,0,1);
transform.RotateAround(point, axis, Time.deltaTime * 10);

如果您正努力了解这些转换函数,有一种替代方法。简单地在你想要旋转的地方创建一个新的游戏对象。然后使精灵成为该游戏对象的子对象。旋转游戏对象时,精灵应围绕该点移动

实际上你可以使用一些游戏对象作为锚:

    public GameObject anchor;
    public float velocidad;
    void Start () {
        velocidad = 50f;
    }

    // Update is called once per frame
    void FixedUpdate () {

        transform.RotateAround(anchor.transform.localPosition, Vector3.back, Time.deltaTime*velocidad);
    }

嗯,为什么不能在2d中使用
transform.RotateAround()
函数?可以使用相同的函数。旋转轴将变为Vector3.back或Vector3.forward,具体取决于您要旋转的方向。感谢您解释如何在2D Ryemos中使用该函数。我不认为它可以用于2D,因为我以前尝试过使用它,我的角色只是当场旋转。不过,我刚刚又试了一次,按照你解释如何使用它的方式,它现在可以工作了!再次感谢!你可以用一个支点,我知道这条线很旧,但这是一个很好的答案!:)