GetMouseButtonUp
возвращает true только для одиночного кадра , который был отпущен кнопкой. Ваш код yields
затем.
Давайте пройдемся по нему:
if (Input.GetMouseButton(1) ...
Пользователь отпустил свою мышь, когда он хочет атаковать, так что это неверно.
else {
yield return null;
}
Таким образом, вы уступаете и ждете следующего кадра. Затем, когда выполнение возобновляется:
if (Input.GetMouseButtonUp(1))
Это неверно, поскольку пользователь отпустил кнопку мыши последний кадр. Вы должны вложить весь этот блок в оператор else над строкой yield return null
.