Я новичок в 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);
Заранее спасибо
Также я заметил, что когда я вращаю эту плоскость в редакторе, координаты положения тоже меняются. Это нормально ..?