void SpawnElectron(int index) { GameObject elecObj = GameObject.Instantiate(electronTemp); elecObj.transform.parent = electronContainer.transform; elecObj.transform.localPosition = Vector3.zero; Electron electron = elecObj.GetComponent <Electron> (); ElectronData data = CalculateElectronData(index); electron.SetElectronLocation(data.position); electron.SetRotation(sphere.transform.position, data.normal, speed); elecObj.SetActive(true); }
ElectronData CalculateElectronData(int index) { ElectronData data = new ElectronData(); float angle = 180f / electronCount * index; Quaternion q = Quaternion.AngleAxis(angle, firstNormalAxis); data.normal = q * firstNormal; Vector3 pos = firstPosition; q = Quaternion.AngleAxis(Random.Range(0, 360f), data.normal); float distance = Vector3.Distance(pos, sphere.transform.position); float scale = sphere.transform.localScale.x / distance; pos = sphere.transform.position + (q * pos) * scale; data.position = pos; return(data); }