制作双面平面

问题描述 投票:0回答:1

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

提前谢谢您

[此外,我已经注意到,当我在编辑器中旋转此平面时,位置坐标也在改变。正常吗??

unity3d rotation plane
1个回答
0
投票

为什么不创建一个多维数据集并在每个轴上给它一个比例。这样会更简单,您可以仅在Y轴上旋转它们,然后完成。最后,只需将所有多维数据集放置在所需的位置即可,并且在技术上已完成。您还有其他原因想要飞机而不是立方体吗?

© www.soinside.com 2019 - 2024. All rights reserved.