RGSS2を知る(15)

休みの日に一日中こんなことやってるのってどうなん?

b = Bitmap.new(100,100)
b.fill_rect(b.rect, Color.new(255,255,255,255))

s = Sprite.new
s.bitmap = b
s.angle = 45

loop do
  Graphics.update
end


白い四角を回転させた。
この結果から言えることは、反時計回りの360度系(マニュアルに書いてある)で、回転原点が左上の点である、ということ。
デフォルトがこれならば、回転原点を指定するためのメソッドがあるはずだ。
それらしいものはox=/oy=しかなかったが、これは画像の転送原点とだけ書いてある。
試してみよう。

b = Bitmap.new(100,100)
b.fill_rect(b.rect, Color.new(255,255,255,255))

s = Sprite.new
s.bitmap = b
s.ox = s.width/2
s.oy = s.height/2
s.angle = 45
s.x = s.width/2
s.y = s.height/2

loop do
  Graphics.update
end


転送原点は回転の原点でもあるらしい。


とりあえず、回転方向が半時計周りなのはy座標が上向きに+な座標系の話だろう、と思う。
描画座標系を下向きに取ってるのだから、時計回りにしないと三角関数と結果がズレてくる。
あと、回転原点と描画原点が同じ扱いなのは、ちょっとやりにくい。
画像を回転させるゲームを作る場合、座標を中心原点としてすべて扱うことが義務付けられる。細工すれば回避できるが、細工しないといけない。
2Dゲームを作るときにキャラの座標を中心に取るのって聞いたことないし。
とはいえこのへんを変えると別ライブラリになってしまうので、互換ライブラリはこのようにしなければならない。