IEnumerator Whip(float finalRadius, GameObject danmakuObject) { float turningSquareWidth = 25f; Vector3 turningPosition = new Vector3( Random.Range(-turningSquareWidth, turningSquareWidth), Random.Range(-turningSquareWidth, turningSquareWidth), 0f); turningPosition += gameObject.transform.position; turningPosition.z = 50f; float t1 = Random.Range(0, Mathf.PI * 2); float t2 = Random.Range(0, Mathf.PI * 2); Vector3 turningOffset = new Vector3(Mathf.Cos(t1), Mathf.Sin(t1), 0); Vector3 finalOffset = new Vector3(Mathf.Cos(t2), Mathf.Sin(t2), 0); WhipDanmaku tip = null; for (int i = 0; i < 20; i++) { Vector3 initialPosition = gameObject.transform.position; GameObject instance = Instantiate(danmakuObject); WhipDanmaku whip = instance.AddComponent <WhipDanmaku>(); if (tip == null) { tip = whip; } whip.InitializeWithPoints( initialPosition, turningPosition + i * 1.5f * turningOffset, finalOffset * (finalRadius + i * 3f), tip, 50f); yield return(new WaitForSeconds(0.1f)); } }
public void InitializeWithPoints(Vector3 initialPosition, Vector3 turningPosition, Vector3 finalOffset, WhipDanmaku tip, float speed) { this.initialPosition = initialPosition; this.turningPosition = turningPosition; this.finalOffset = finalOffset; if (tip == null) { tip = this; } this.tip = tip; this.speed = speed; flag = false; }