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
あ、テニスのコートは正方形じゃない気がする。