トピック
yuy(α) studio-reader

選択した複数のbgを回転・反転して描く方法

スクリーンショットで、四角い枠の中にあるbgを回転・反転させてbgputしたいのですが、効率の良い方法が思いつきません。 例えば、■◇←これをbgキャラとして、 右へ回転させたら、 ■◇■   ◇■■ ■■■ ⇒ ■■◇ ◇■◇   ◇■■ 上下反転させたら、 ■◇■   ◇■◇ ■■■ ⇒ ■■■ ◇■◇   ■◇■ こうなるようにbgputしたいのです。 直線をgpsetだけで実現するアルゴリズムがあるように、そういったものはあるのでしょうか?
1そうだね
プレイ済み
返信[1]
親投稿
みむ*mim hidemimtp
複数のBGキャラを回転しつつ位置も返る・・・既存の関数だけで一発でってのは難しいですねぇ。 見た目だけなら、違うBGレイヤーでBGROTすればいいですが・・・・ やるなら、別レイヤーに9キャラ置いて、BGROTして、ドット座標からBGGETして、そのキャラにBGROT分の回転(90,180,270度限定)のアトリビュートを加えるとかどうでしょうね。
0そうだね
プレイ済み
返信[2]
親投稿
yuy(α) studio-reader
>みむさんへ いい方法ですが、bgレイヤーを1つ犠牲にするのがネックですね… でんぺんさんのマップエディタでは、その表示は実現できていたので、どんな方法が使われているのかなと思って質問しました。そう言えば、あまりコード見ていなかったのでどんな構造になっているか見てみます。
1そうだね
プレイ済み
返信[3]
親投稿
あの処理は力技であまり良い処理じゃなかったような気がします…。 元の左上からのパーツが回転後はどの位置になるかを無理やり求めてその位置に配置している感じだったような気がしますが、僕も正確に覚えてないぐらいです…
1そうだね
プレイ済み
返信[4]
親投稿
ちゃんとやろうと思ったら、パーツ配置の際に行列演算のような計算をして実際の位置を決めるのがいいんじゃないかなと思いますね。僕はその部分を力業でまともにやらなかったんでちょっと反省してます。 例えば右90度回転なら、X=-Y, Y=Xで回転した位置になります。ただそのままだと原点基準なので、X=H(縦幅)-Y, Y=Xにして補正した方がいいです。X座標なのに縦幅を足しているのは90度回転しているので、そうなると横幅は縦幅になるので、縦幅をずらしています。 考え方としてはこの組み合わせだとは思いますが慣れてないと混乱するところがあるんで気をつけてください。(てか僕は混乱して力業にしてしまった反省があります。今ならちゃんと直すと思いますが…)
0そうだね
プレイ済み
返信[5]
親投稿
自分の説明の補足的にはこんなコードです。
0そうだね
プレイ済み
返信[6]
親投稿
yuy(α) studio-reader
>でんぺんさんへ 詳細な解説、それにサンプルまで用意してくださってありがとうございます。 ただ、今後も色々何か質問があるかも知れませんので、トピックは継続させていただきます。
0そうだね
プレイ済み
返信[7]
親投稿
yuy(α) studio-reader
実現できました! でんぺんさんに確認したいのですが、でんぺんさんの上の投稿のソースコードを改造して実現させたので、改造したソースコードを自作ツールに組み込んでもよろしいでしょうか? スクリーンショットは改造したソースコードの一部です。
1そうだね
プレイ済み
返信[8]
親投稿
実現できて良かったです〜。 もちろん改造したコードを組み込んでもOKですよ! そのままでも改造でも自由に使ってもらってかまいませんー。 それに改造して自分のコードになってますし、活用してもらえて良かったぐらいですよ。 これからも頑張ってください!
0そうだね
プレイ済み