Example #1
0
    private IEnumerator ActivateRoutine()
    {
        beam.startWidth = beam.endWidth = aimBeamWidth;
        beam.enabled    = true;

        var fireTime = Conductor.GetNextNote(preFireNoteTime, preFireNoteOffset);

        StartCoroutine(Aim(fireTime));
        StartCoroutine(Spin(fireTime));
        yield return(new WaitForNote(preFireNoteTime, preFireNoteOffset - 1));

        var waitTime = Conductor.GetNextNote(preFireNoteTime) - Conductor.noteDurations[Note.Thirtysecond];

        yield return(new WaitForDspTime(waitTime));

        PlayerSfx.PlayShootSfx();

        yield return(Fire());

        Destroy(gameObject);
        // if (hits > 0)
        // {
        //  var hitDetector = hitBuffer[0].collider.gameObject.GetComponent<HitDetector>();
        //  if (hitDetector != null) hitDetector.Hit(Hit.Shot, direction);
        // }

        GameObject.Destroy(gameObject);
    }