Unity3D_圆环算法

来源:互联网 发布:淘宝同行跳失率怎么看 编辑:程序博客网 时间:2024/05/29 07:43

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

具体代码:

public class circleCS : MonoBehaviour {public GameObject cubeModel;private float r=5;private float angle = 0;// Use this for initializationvoid 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 framevoid Update () {}}

最后的效果如下:



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

public class circleCS : MonoBehaviour {public GameObject cubeModel;private float r=5;private float angle = 0;// Use this for initializationvoid 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 framevoid Update () {}}


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


只需要添加:

cube.transform.LookAt(center);

即可。

最后效果如下:


加上

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

可以更改圆环的大小。