public override void Fire(DanmakuConfig state) { float radius = Radius.GetValue(); int count = Mathf.RoundToInt(Count.GetValue()); if (count == 0) { return; } if (count == 1) { Subfire(state); return; } float arcLength = ArcLength.GetValue(); var rotation = state.Rotation.GetValue(); var start = rotation - arcLength / 2; for (int i = 0; i < count; i++) { var angle = start + i * (arcLength / (count - 1)); var currentState = state; currentState.Position = state.Position + (radius * RotationUtiliity.ToUnitVector(angle)); currentState.Rotation = angle; Subfire(currentState); } }
public override void Fire(DanmakuConfig state) { float radius = Radius.GetValue(); int count = Mathf.RoundToInt(Count.GetValue()); var rotation = state.Rotation.GetValue(); var currentState = state; for (int i = 0; i < count; i++) { var angle = rotation + i * (Mathf.PI * 2 / count); currentState.Position = state.Position + (radius * RotationUtiliity.ToUnitVector(angle)); currentState.Rotation = angle; Subfire(currentState); } }