Unity - 围绕 2D 中的点旋转对象

Posted

技术标签:

【中文标题】Unity - 围绕 2D 中的点旋转对象【英文标题】:Unity - Rotate an object around a point in 2D 【发布时间】:2018-06-27 17:51:51 【问题描述】:

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

【问题讨论】:

嗯,你为什么不能使用transform.RotateAround() 函数进行 2d? 您可以使用相同的功能。根据您要旋转的方向,旋转轴将简单地变为 Vector3.back 或 Vector3.forward。 感谢您解释如何在 2D ryeMoss 中使用该功能。我不认为它可以用于 2D,因为我之前尝试使用它,而我的角色只是在原地旋转。不过,我刚刚再次尝试了它,按照您解释如何使用它的方式,它现在可以工作了!再次感谢! 你也可以使用轴心点 【参考方案1】:

您可以使用相同的功能。 transform.RotateAround() 采用 Vector3 pointVector3 axisfloat angle 度数。

点和角度很容易解释,但轴就不那么解释了。这本质上是旋转方向。在默认的 Unity2D 游戏中,z 是您的深度(进入屏幕),您需要绕 Z 轴旋转:new Vector3(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);

【讨论】:

【参考方案2】:

如果您难以理解这些转换函数,可以使用另一种方法。简单地在您希望旋转的点创建一个新的游戏对象。然后使精灵成为该游戏对象的子对象。当您旋转游戏对象时,精灵应该围绕该点移动。

【讨论】:

我知道这个帖子很旧,但这是一个很好的答案!:)【参考方案3】:

其实你可以使用一些 GameObject 作为锚点:

    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);
    

【讨论】:

以上是关于Unity - 围绕 2D 中的点旋转对象的主要内容,如果未能解决你的问题,请参考以下文章

Unity 对象不围绕枢轴点旋转

如何在编辑器中为 Unity 中的旋转平台脚本添加列表

Unity - Blender - Unity 中的对象获得错误的枢轴

Unity C# 向围绕移动轴旋转的目标发射弹丸

如何使用MATLAB围绕不是图像中心点的点旋转图像?

Unity,改变子对象的旋转。无法访问子对象