2006-11-22
テニスゲームの実装(3)
カメラクラスによる座標変換とスクリーン投影。
キャラクターをコート(コートのサイズは1000×1000)の四隅に見立てて、画面を見ながらキメウチでカメラのパラメータを割り出してみた。
class Camera def draw(*args) screen_z = 600.0 y = 60 z = -1300 ry = Math::PI / 4 args.to_a.flatten.each do |e| tx = e.x ty = e.y * Math.cos(ry) - e.z * Math.sin(ry) tz = e.y * Math.sin(ry) + e.z * Math.cos(ry) ty -= y perse = screen_z / (tz - z) e.view.x = tx * perse + screen.w / 2 e.view.y = ty * perse + screen.h / 2 e.view.scalex = e.view.scaley = perse * 2 e.view.draw end end end
あ、テニスのコートは正方形じゃない気がする。