C# 如何在unity3d中围绕对象绘制圆?
我想在场景中画一个立方体。我在unity3d上创建了一个项目。它有主摄像机和平行光。我使用unity gui添加了一个空的游戏对象。我创建了一个C# 如何在unity3d中围绕对象绘制圆?,c#,unity3d,drawing,C#,Unity3d,Drawing,我想在场景中画一个立方体。我在unity3d上创建了一个项目。它有主摄像机和平行光。我使用unity gui添加了一个空的游戏对象。我创建了一个.cs文件并附加到gameobject。C#文件的内容为: using UnityEngine; using System.Collections; using System.Collections.Generic; /** * Simple example of creating a procedural 6 sided cube */ [Re
.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();
}
}
使用UnityEngine;
使用系统集合;
使用System.Collections.Generic;
/**
*创建程序性6边立方体的简单示例
*/
[要求组件(类型(网状过滤器))]
[RequiredComponent(typeof(MeshRenderer))]
公共课堂测试:单一行为{
无效开始(){
MeshFilter=gameObject.GetComponent();
网格=新网格();
meshFilter.mesh=网格;
mesh.vertices=新矢量3[]{
//面1(xy平面,z=0)
新矢量3(0,0,0),
新矢量3(1,0,0),
新矢量3(1,1,0),
新矢量3(0,1,0),
//面2(zy平面,x=1)
新矢量3(1,0,0),
新矢量3(1,0,1),
新矢量3(1,1,1),
新矢量3(1,1,0),
//面3(xy平面,z=1)
新矢量3(1,0,1),
新矢量3(0,0,1),
新矢量3(0,1,1),
新矢量3(1,1,1),
//面4(zy平面,x=0)
新矢量3(0,0,1),
新矢量3(0,0,0),
新矢量3(0,1,0),
新矢量3(0,1,1),
//面5(zx平面,y=1)
新矢量3(0,1,0),
新矢量3(1,1,0),
新矢量3(1,1,1),
新矢量3(0,1,1),
//面6(zx平面,y=0)
新矢量3(0,0,0),
新矢量3(0,0,1),
新矢量3(1,0,1),
新矢量3(1,0,0),
};
int faces=6;//这里a faces=2个三角形
列表三角形=新列表();
列表UV=新列表();
对于(int i=0;i
这个代码有效。现在,我想使用SetPixel
函数在这个立方体周围画一个具有透视效果的圆。我怎么做这项工作?我想创建一个视图,如下所示
1-与其创建手工制作的立方体,不如使用一个基本长方体并设置大小 2-问题之一是你的“D”可能不同,取决于盒子的旋转 例如,如果长方体为0º,则0º方向上的D将为0.5(从1个单位立方体的中心到边界)。如果计算45º方向上的D,sabe框将为0.7(使用) 即使尝试先计算边界,此边界也会因旋转而不同。0º=0.5、45º=0.7等等(同样的问题) 简单的解决方法(我现在可以这么想)是: 创建基本立方体并设置所需的比例。 创建表示圆的平面,并添加圆的透明纹理。 将平面(圆)添加为长方体的子对象,调整长方体大小时,圆将一起调整大小
对不起,语法错误,英语不是我的母语。
D
不是一个常数。但我想把立方体放在圆心上。我不使用原始框。我应该创建自己的多维数据集,这是一项任务。