Example #1
0
        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);
            }
        }
Example #2
0
 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);
   }
 }