2014/11/26(水) [n年前の日記]
#1 [cg_tools][dxruby][spriter] Spriterのデータを反転表示できた
Spriter のデータを、DXRuby上で反転表示することが一応できた。
考えてみたら、一番上の親のその上にもう一つ親を作って、その親の scale_x, scale_y を -1.0 等にすれば反転表示できないかと思ったわけで。Spriter上で該当する親ボーンを作ってスケール値を変えたら予想通りになった。その調子で、スクリプト上でも試したところ、各パーツの角度がおかしなことに。
スケール値の符号によって、各パーツの回転角度の方向を変えないといかんのだなと。とりあえず、scale_x * scale_y の値がプラス値なら角度を加算、マイナス値なら減算するようにしたら、それっぽい表示になった。
同様に、全体の回転角度も指定できるように。新規に作った親ボーンの角度を変更したら回転してくれた。
が、回転後に水平垂直反転させるか、水平垂直反転後に回転させるかで悩んだり。一般的には前者のほうがいいのかも。しかし今回はゲーム用にと考えているので、後者の方がいいだろうなと。
一応できたものの、Spriter上で生成する一番上の親ボーンが90度の角度を持っている時に反転表示がおかしくなる。水平反転したつもりが垂直反転するというか。90度回転してるのだから正しい動作のような気もするけれど。とりあえず、Spriter上で一番上に全体を管理するためだけのボーンを作る際には、角度=0で ―― 画面に対して右方向にボーンが伸びていく形で設定してもらうしかないかなと。
考えてみたら、一番上の親のその上にもう一つ親を作って、その親の scale_x, scale_y を -1.0 等にすれば反転表示できないかと思ったわけで。Spriter上で該当する親ボーンを作ってスケール値を変えたら予想通りになった。その調子で、スクリプト上でも試したところ、各パーツの角度がおかしなことに。
スケール値の符号によって、各パーツの回転角度の方向を変えないといかんのだなと。とりあえず、scale_x * scale_y の値がプラス値なら角度を加算、マイナス値なら減算するようにしたら、それっぽい表示になった。
同様に、全体の回転角度も指定できるように。新規に作った親ボーンの角度を変更したら回転してくれた。
が、回転後に水平垂直反転させるか、水平垂直反転後に回転させるかで悩んだり。一般的には前者のほうがいいのかも。しかし今回はゲーム用にと考えているので、後者の方がいいだろうなと。
一応できたものの、Spriter上で生成する一番上の親ボーンが90度の角度を持っている時に反転表示がおかしくなる。水平反転したつもりが垂直反転するというか。90度回転してるのだから正しい動作のような気もするけれど。とりあえず、Spriter上で一番上に全体を管理するためだけのボーンを作る際には、角度=0で ―― 画面に対して右方向にボーンが伸びていく形で設定してもらうしかないかなと。
[ ツッコむ ]
以上です。