void Start() { _prevOffset = Vector3.zero; particleBuffer = new ComputeBuffer(numberOfParticles, Marshal.SizeOf(typeof(ParticleData))); connectionBuffer = new ComputeBuffer(numberOfParticles, Marshal.SizeOf(typeof(ConnectionData))); var pData = new ParticleData[numberOfParticles]; var cData = new ConnectionData[numberOfParticles]; for (int i = 0; i < pData.Length; i++) { //pData[i].Velocity = Random.insideUnitSphere; //pData[i].Position = Random.insideUnitSphere; float xSpeed = Random.Range(-0.2f, 0.2f); float ySpeed = Random.Range(-0.2f, 0.2f); float zSpeed = Random.Range(-0.2f, 0.2f); Vector3 speedVec = Random.insideUnitSphere * speedScale; //pData[i].Velocity = new Vector3(xSpeed, ySpeed, zSpeed); pData[i].Velocity = new Vector3(speedVec.x, speedVec.y, speedVec.z); //pData[i].Velocity = new Vector3(0,0,0); //float yPos = Random.Range(0.1f, 1f); //float zPos = Random.Range(0.1f, 1f); Vector3 spherePosition = Random.insideUnitSphere * SphereSize; //Vector3 position = new Vector3(yPos*2, -xPos*2, 0); Vector3 position = new Vector3(spherePosition.x, spherePosition.y, spherePosition.z); pData[i].Position = position; // Set Up Connection Data } for (int i = 0; i < cData.Length; i++) { cData[i].Start = new Vector3(0, 0, 0); cData[i].End = new Vector3(0, 0, 0); cData[i].Connect = 0; } // コンピュートバッファに初期値データをセット particleBuffer.SetData(pData); connectionBuffer.SetData(cData); pData = null; cData = null; // パーティクルをレンダリングするマテリアルを作成 particleRenderMat = new Material(ParticleRenderShader); particleRenderMat.hideFlags = HideFlags.HideAndDontSave; lineRenderMat = new Material(LineRenderShader); lineRenderMat.hideFlags = HideFlags.HideAndDontSave; }
// Start is called before the first frame update void Start() { _prevOffset = Vector3.zero; particleBuffer = new ComputeBuffer(numberOfParticles, Marshal.SizeOf(typeof(ParticleData))); var pData = new ParticleData[numberOfParticles]; for (int i = 0; i < pData.Length; i++) { Vector3 speedVec = Random.insideUnitSphere * speedScale; pData[i].Velocity = new Vector3(speedVec.x, speedVec.y, speedVec.z); Vector3 spherePosition = Random.insideUnitSphere * SphereSize; Vector3 position = new Vector3(spherePosition.x, spherePosition.y, spherePosition.z); pData[i].Position = position; } particleBuffer.SetData(pData); pData = null; particleRenderMat = new Material(ParticleRenderShader); particleRenderMat.hideFlags = HideFlags.HideAndDontSave; }