コールバック関数による当たり判定って

全キャラクタのタスク更新

判定管理クラスの関数を呼び出し→各キャラクタのタスクのコールバック関数呼び出し

描画

みたいな流れかと思ったんですが、
コールバック関数内でタスクの状態(位置など)を変化させられないと、
キャラクタ同士めり込んだ状態とかで描画されてしまいますよね?
その辺はどう処理されてるのでしょうか?