>>885
壁が3Dの複雑な形状でなければ、
一つ前のフレームと今のフレームの座標を出して、その座標間に壁があるかどうかを判定して、
その間に壁があればそこまでの移動で止める。

wall_x = 320;//壁のx座標
posx_a = 310;//前フレームのキャラのx座標
posx_b = 328;//今のフレームのキャラのx座標

if ( ( posx_a < wall_x )&&( posx_b > wall_x ) ){//壁に左からぶつかったとき
 posx_b = 319;
}else if ( ( posx_a > wall_x )&&( posx_b < wall_x ) ){//壁に右からぶつかったとき
 posx_b = 321;
}

これならキャラの速度が瞬速で、壁が紙のように薄くても大丈夫。