簡體   English   中英

如何在unity3d中圍繞對象繪制圓圈?

[英]How to draw circle around an object in unity3d?

我想在場景上繪制一個立方體。 我在unity3d上創建一個項目。 它具有主攝像頭和定向燈。 我使用unity gui添加一個空的gameobject。 我創建一個.cs文件並附加到gameobject。 C#文件的內容為:

using UnityEngine; 
using System.Collections;
using System.Collections.Generic;

/**
 * Simple example of creating a procedural 6 sided cube
 */
[RequireComponent (typeof (MeshFilter))] 
[RequireComponent (typeof (MeshRenderer))]
public class test : MonoBehaviour {

void Start () {
    MeshFilter meshFilter = gameObject.GetComponent<MeshFilter>();
    Mesh mesh = new Mesh ();
    meshFilter.mesh = mesh;

    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), 
    };

    int faces = 6; // here a face = 2 triangles

    List<int> triangles = new List<int>();
    List<Vector2> uvs = new List<Vector2>();

    for (int i = 0; i < faces; i++) {
        int triangleOffset = i*4;
        triangles.Add(0+triangleOffset);
        triangles.Add(2+triangleOffset);
        triangles.Add(1+triangleOffset);

        triangles.Add(0+triangleOffset);
        triangles.Add(3+triangleOffset);
        triangles.Add(2+triangleOffset);

        // same uvs for all faces
        uvs.Add(new Vector2(0,0));
        uvs.Add(new Vector2(1,0));
        uvs.Add(new Vector2(1,1));
        uvs.Add(new Vector2(0,1));
    }

    mesh.triangles = triangles.ToArray();

    mesh.uv = uvs.ToArray();

    GetComponent<Renderer>().material = new Material(Shader.Find("Diffuse"));

    mesh.RecalculateNormals(); 
    mesh.RecalculateBounds (); 
    mesh.Optimize();
} 
}

此代碼有效。 現在,我想使用SetPixel函數在這個立方體周圍繪制具有透視效果的圓。 我該怎么做? 我想創建一個如下視圖

在此處輸入圖片說明

1-為什么不創建一個手工制作的多維數據集,為什么不使用原始框並設置大小呢?

2-問題之一是您的“ D”可以不同,具體取決於盒子的旋轉角度。

例如,如果您的框為0º,則0º方向上的D將為0.5(從1立方的中心到邊界)。 如果您在45º方向上計算D,則sabe框將為0.7(斜邊)。

即使您先嘗試計算邊界,此邊界在旋轉時也會有所不同。 0º= 0.5、45º = 0.7等等(同樣的問題)

達到足夠的簡單方法(我現在可以想到)是:

創建一個基本立方體並設置所需的比例。 創建一個將代表該圓的平面,並添加一個圓的透明紋理。 將平面(圓)添加為框的子級,同時調整框的大小時,圓將一起調整大小。

抱歉,語法不是我的母語。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM