20はCで組んでいる以外に何も情報がないので
ループをぐるぐるしてリアルタイムゲームを作っていると
想定して書いてみるけど。

そのif文の{}の中で描画の処理をさせるんじゃなく、
とりあえずキャラクターの状態フラグだけ変化させておいて
(ex:静止中、歩き中、ジャンプ中、剣振り中)
メインループから呼ばれる描画ルーチンの中で、キャラの状態フラグに
応じて、キャラグラフィックの転送元座標を算出・描画という処理を
した方が良いかと思たよ。