2015-06-04 4 views
0

Я хочу нарисовать 3d-круг и 3d-куб в центре круга на unity3d. Я создаю 6 граней куба ниже код:Как нарисовать несколько 3D-объектов на единстве?

mesh.vertices = new Vector3[]{ 
     // face 1 (xy plane, z=0) 
     new Vector3(0,0,0), 
     new Vector3(1,0,0), 
     new Vector3(1,1,0), 
     new Vector3(0,1,0), 
     // face 2 (zy plane, x=1) 
     new Vector3(1,0,0), 
     new Vector3(1,0,1), 
     new Vector3(1,1,1), 
     new Vector3(1,1,0), 
     // face 3 (xy plane, z=1) 
     new Vector3(1,0,1), 
     new Vector3(0,0,1), 
     new Vector3(0,1,1), 
     new Vector3(1,1,1), 
     // face 4 (zy plane, x=0) 
     new Vector3(0,0,1), 
     new Vector3(0,0,0), 
     new Vector3(0,1,0), 
     new Vector3(0,1,1), 
     // face 5 (zx plane, y=1) 
     new Vector3(0,1,0), 
     new Vector3(1,1,0), 
     new Vector3(1,1,1), 
     new Vector3(0,1,1), 
     // face 6 (zx plane, y=0) 
     new Vector3(0,0,0), 
     new Vector3(0,0,1), 
     new Vector3(1,0,1), 
     new Vector3(1,0,0), 
    }; 

я создаю круг вокруг куба ниже код:

float x; 
    float y; 
    float z = 0.5f; 

    float angle = 1f; 

    for (int i = 0; i < (segments + 1); i++) 
    { 
     x = 0.5f + Mathf.Sin (Mathf.Deg2Rad * angle) * xradius; 
     y = 0.5f + Mathf.Cos (Mathf.Deg2Rad * angle) * yradius; 

     line.SetPosition (i,new Vector3(x,y,z)); 

     angle += (360f/segments); 
    } 

я ожидаю, что верхние индексы делают верхнюю задачу. Но они этого не делают. Я вижу куб и круг. Но куб не является cenetr круга 3d. z не подходит для меня.

Мой скриншот ниже:

enter image description here

Должен ли я использовать несколько камеры для этой работы?

+0

Ваш код выглядит хорошо, на первый взгляд. Во всяком случае, я бы в основном хотел проверить компонент преобразования на кубах и объектах камеры. Кто-то из них повернулся на сцене? – rutter

+0

Они вращаются в сцене. Но я думаю, что x вращение круга неверно. В верхнем изображении углы куба и круга не похожи друг на друга. – zumma

+0

Точки на 'Mesh' находятся в локальном пространстве. Точки на 'LineRenderer' находятся в мировом пространстве. Один будет следовать его трансформации, а другой - нет. При необходимости вы можете отрегулировать это, вызвав 'transform.TransformPoint' при назначении точек линии. – rutter

ответ

0

Хорошо, отвечая здесь, потому что я не могу комментировать. Как сказал руттер, это похоже на космическую проблему. Но вы можете сделать точки LineRenderer в локальном пространстве, просто снимите отметку Use World Space bool в инспекторе. Это также позволит вам свободно перемещать ваш GameObject вокруг сцены.

Смежные вопросы