К какому игровому объекту прикреплен этот скрипт? Вы проверяете, является ли игровой объект, прикрепленный к скрипту, нулевым с помощью
if (state == State.GetOut && gameObject != null) {
, вы имели в виду поставить
if (state == State.GetOut && rbMissile != null) {
Также, если это не решит проблему, ваша проблема, вероятно, состоит в том, что :
StartCoroutine(FlyState(target));
Что-то в методе FlyState ссылается на нулевой игровой объект
если
if (state == State.GetOut && rbMissile != null) {
не исправил это, ваша ракета разрушается между этим вызывается метод и задержка в одну секунду из:
yield return new WaitForSecondsRealtime(1);
Два возможных исправления: изменить IEnumerator на метод void и удалить
yield return new WaitForSecondsRealtime(1);
или добавить еще одну проверку через секунду проходит
if (rbMissle != null) {
rbMissile.velocity = Vector2.zero;
}