Unity5 平面枢轴点创建
Unity5 Plane pivot point creating
我用 C# 脚本创建了一个 50x50 的平面。我使用了顶点、UV 和三角形。那些飞机正在制造一个区域。所以没有问题。但是我的第一个Plane_0_0定位在中心。我需要每架飞机都旋转到左下角。我怎样才能用脚本旋转左下角?
你的问题有点不清楚。但据我所知,你正试图让你的飞机旋转。为此,您可以使用欧拉角:
gameObj.transform.eulerAngles = new Vector3(
gameObj.transform.eulerAngles.x,
gameObj.transform.eulerAngles.y,
gameObj.transform.eulerAngles.z
); //Find the axis on which you want to rotate, and apply a value to it, for example :
//gameObj.transform.eulerAngles.y + 150
当然,gameObj 是您的平面对象。
好的,我想我明白了。您希望左下角 "tile" 成为整个 "tileset" / "map" 的中心,因此如果您旋转 "everything",那应该是中心。
好的,这很容易。您需要做的是,使 Plane_0_0 平铺成为其余平铺的父级(将要成为旋转一部分的所有平铺的 .Parent
属性 设置为 "pivot tile" GO).
稍后,您可以更改此设置。所以如果例如其他一些瓷砖应该是枢轴中心,你可以 "reset parenting"。但是重新设置是一个昂贵的例程。
编辑
因为(就像我上面写的那样)重新设置是一项昂贵的操作,我在考虑替代方案,这就是我发现我会使用的方法:创建一个 GameObject
(假设是另一架飞机),没有网格渲染器、碰撞器等,并将其拉出到场的大小(在编辑器中) .使它成为场景中所有瓦片的父级。然后,每当你需要 'pivot' 一切时,你可以去父平面的 RotateAround,在你想要的任何地方标记旋转中心(例如 "above" 左下角的瓷砖)。
我还会修改标准 Unity Plane
并从中删除 Mesh Collider
并用简单的 Box Collider
替换它,另存为预制件并将该预制件用作我的瓷砖以节省一些计算时间(如果飞机的工作就是充当高原。
我用 C# 脚本创建了一个 50x50 的平面。我使用了顶点、UV 和三角形。那些飞机正在制造一个区域。所以没有问题。但是我的第一个Plane_0_0定位在中心。我需要每架飞机都旋转到左下角。我怎样才能用脚本旋转左下角?
你的问题有点不清楚。但据我所知,你正试图让你的飞机旋转。为此,您可以使用欧拉角:
gameObj.transform.eulerAngles = new Vector3(
gameObj.transform.eulerAngles.x,
gameObj.transform.eulerAngles.y,
gameObj.transform.eulerAngles.z
); //Find the axis on which you want to rotate, and apply a value to it, for example :
//gameObj.transform.eulerAngles.y + 150
当然,gameObj 是您的平面对象。
好的,我想我明白了。您希望左下角 "tile" 成为整个 "tileset" / "map" 的中心,因此如果您旋转 "everything",那应该是中心。
好的,这很容易。您需要做的是,使 Plane_0_0 平铺成为其余平铺的父级(将要成为旋转一部分的所有平铺的 .Parent
属性 设置为 "pivot tile" GO).
稍后,您可以更改此设置。所以如果例如其他一些瓷砖应该是枢轴中心,你可以 "reset parenting"。但是重新设置是一个昂贵的例程。
编辑
因为(就像我上面写的那样)重新设置是一项昂贵的操作,我在考虑替代方案,这就是我发现我会使用的方法:创建一个 GameObject
(假设是另一架飞机),没有网格渲染器、碰撞器等,并将其拉出到场的大小(在编辑器中) .使它成为场景中所有瓦片的父级。然后,每当你需要 'pivot' 一切时,你可以去父平面的 RotateAround,在你想要的任何地方标记旋转中心(例如 "above" 左下角的瓷砖)。
我还会修改标准 Unity Plane
并从中删除 Mesh Collider
并用简单的 Box Collider
替换它,另存为预制件并将该预制件用作我的瓷砖以节省一些计算时间(如果飞机的工作就是充当高原。