Unity3D_圆环算法

以cube为预制件,不断旋转复制,就形成了圆环。

具体代码:

public class circleCS : MonoBehaviour {
	public GameObject cubeModel;
	private float r=5;
	private float angle = 0;

	// Use this for initialization
	void Start () {
		Vector3 center = cubeModel.transform.position;
		for (int i=0; i<12; i++) {
			GameObject cube = (GameObject)GameObject.Instantiate(cubeModel);
			float hudu = (angle/180)*Mathf.PI;
			float xx = center.x + r*Mathf.Cos(hudu);
			float yy = center.y + r*Mathf.Sin(hudu);
			cube.transform.position = new Vector3(xx,yy,0);
			angle += 30;//每30°旋转一下
		}
	}
	
	// Update is called once per frame
	void Update () {
	
	}
}

最后的效果如下:

Unity3D_圆环算法_第1张图片


如果更改参数,让其密度更大一点,并且更改其方向改为铺到地面上,代码和最终的效果图如下:

public class circleCS : MonoBehaviour {
	public GameObject cubeModel;
	private float r=5;
	private float angle = 0;

	// Use this for initialization
	void Start () {
		Vector3 center = cubeModel.transform.position;
		for (int i=0; i<36; i++) {
			GameObject cube = (GameObject)GameObject.Instantiate(cubeModel);
			float hudu = (angle/180)*Mathf.PI;
			float xx = center.x + r*Mathf.Cos(hudu);
			float zz = center.z + r*Mathf.Sin(hudu);
			cube.transform.position = new Vector3(xx,0,zz);
			angle += 10;//每30°旋转一下
		}
	}
	
	// Update is called once per frame
	void Update () {
	
	}
}
Unity3D_圆环算法_第2张图片


但是可以发现,因为周边的cube的方向没有改变,导致毛刺很明显。


只需要添加:

cube.transform.LookAt(center);

即可。

最后效果如下:

Unity3D_圆环算法_第3张图片


加上

cube.transform.localScale = new Vector3(1,1,3);

可以更改圆环的大小。

你可能感兴趣的:(Unity3D)