我是Unity新手,所以也许我的问题太简单了,但是我无法解决。我正在制作虚拟公寓设计师之类的东西,并使用平面绘制墙,所以我有其起点X,终点X,起点Y,终点Y和高度。为了看到每堵墙的两边,我决定将双层墙旋转到180度(可能是错误的)。但是,每一次尝试都失败了。当我使用简单的plane.Rotate
时,它会旋转,但会更改其位置(例如中心在平面的下方)。当我使用plane.RotateArount
时,位置是正确的,但旋转位置不是。有用于创建飞机的代码
public static GameObject CreatePlane(float x1, float z1, float y1, float x2, float z2, float y2, Material material, bool rotate)
{
var go = new GameObject("plane");
var mf = go.AddComponent(typeof(MeshFilter)) as MeshFilter;
var mr = go.AddComponent(typeof(MeshRenderer)) as MeshRenderer;
var m = new Mesh();
m.vertices = new[]
{
new Vector3(x1, y1, z1),
new Vector3(x1, y2, z1),
new Vector3(x2, y2, z2),
new Vector3(x2, y1, z2)
};
m.uv = new[]
{
new Vector2(1,1),
new Vector2(1,1),
new Vector2(1,1),
new Vector2(1,1),
};
m.triangles = new[] {0, 1, 2, 0, 2, 3};
if (mr != null) mr.material = material;
if (mf != null) mf.mesh = m;
m.RecalculateBounds();
m.RecalculateNormals();
go.AddComponent<BoxCollider>();
return go;
}
和我的尝试旋转:
plane.AddComponent<RectTransform>().transform.rotation = Quaternion.Euler(0,0,180);
plane.transform.RotateAround(new Vector3(0,1,0),plane.transform.position, 180);
plane.transform.rotation = Quaternion.Euler(0,0,180);
plane.transform.localRotation = Quaternion.Euler(0,0,180);
提前谢谢您
[此外,我已经注意到,当我在编辑器中旋转此平面时,位置坐标也在改变。正常吗??
为什么不创建一个多维数据集并在每个轴上给它一个比例。这样会更简单,您可以仅在Y轴上旋转它们,然后完成。最后,只需将所有多维数据集放置在所需的位置即可,并且在技术上已完成。您还有其他原因想要飞机而不是立方体吗?