轉自:https://blog.csdn.net/welfare8888/article/details/81449494
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;
public class Sn : MonoBehaviour {
void Start()
{
CreatPointOnSphere(500, 15);
}
public void CreatPointOnSphere(int _wBornPointSum, float _dwDectRadius)
{
int tempIndex = 0;
//生成
float inc = Mathf.PI * (3.0f - Mathf.Sqrt(5.0f));
float off = 2.0f / _wBornPointSum; //注意保持數值精度 m_wBornPointSum:生成的點數
float y;
float r;
float phi;
for (int i = 0; i < _wBornPointSum; i++)
{
y = (float)i * off + (off / 2.0f) - 1.0f;
r = Mathf.Sqrt(1.0f - y * y);
phi = i * inc;
Vector3 pos = new Vector3(Mathf.Cos(phi) * r * _dwDectRadius, y * _dwDectRadius, Mathf.Sin(phi) * r * _dwDectRadius); //m_dwDectRadius 距離球心的距離
tempIndex++;
BornPoint(pos, tempIndex);
}
}
RaycastHit m_hitInfo;
void BornPoint(Vector3 pos, int tempIndex)
{
GameObject obj = GameObject.CreatePrimitive(PrimitiveType.Cube);
obj.transform.localScale = new Vector3(0.1f, 0.1f, 0.1f);
obj.transform.localPosition = pos;
obj.name = string.Concat("Cube", tempIndex);
}
}