内部ロジックとエフェクト系の処理はレイヤーが違うけどどういう設計をするのがセオリーですか?

例えば前進→モーション→ヒットエフェクト/画面揺れ/ダメージ表記→後退をさせたいとして
矢印(エフェクト)ごとに実時間で処理して終了を検知して次の処理を呼び出すような制御になると思うのだが
一連の処理をコードで表現するとエフェクトの繋がりが半ばハードコーディングのようになり
ロジックはそれとは無関係なのにエフェクトに合わせて処理を分断したり待機させることになってしまい
結果として見通しが悪く柔軟性の無いコードになってしまう

多分基本的な何かが分かっていないと思うのだけどその何かが分からない助けて