マイコン研究会の日記

大阪市立大学マイコン研究会のブログです。

回転画像の座標合わせ

世界史担当です。イギリス危なかったですね。

今回は、ゲーム上で回転する画像の特定部分から正確に攻撃を表示させる方法を紹介したいと思います。

画像が回転したとき、何が厄介かというと・・・

回転しないとき

kaiten1.jpgkaiten2.jpg

砲台の左側の発射口から正確にレーザーが照射されていますが・・・

回転したとき

kaiten5.jpgkaiten6.jpg

当たり前といえばそうですが、攻撃がずれて表示されてしまいます。

という訳で、ここから解決策を日本語と記号で書いていきます。

(私が使っている言語はHSPというものなのですが、そのコードを示してもほとんどの方が分からないと思うので・・・)

方針:三角関数で何とかする

回転する砲台の先端座標取得のための角度計算について(弾の中心座標基準版)

緑の円は発射された瞬間の弾の位置を表しています。点Aは砲台画像の中心です。

①:上の図のように角を決めたら、AからBまでの距離を頑張って求めます

②:∠BACも頑張って求めます

③:画像(砲台)の方向(角度)に②を足します

④:③をコサイン関数とサイン関数に放り込みます

⑤:①に④を掛けます

⑥:砲台の現在位置(左上の座標)に、砲台の長さの半分を足します

⑦:⑤に⑥を足します

⑧:⑦から弾の半径(円形でない場合は縦や横の長さの半分)を引きます

※④~⑧はそれぞれ横(コサイン)と縦(サイン)で二つずつあります。

完成です! ⑧が求める座標(発射元の座標)となります。

ずれる場合は①→②の順で微調整してください。

ネット上ではもう少し単純な方法もあったのですが、何故か上手くいきませんでした。

三角関数を使うときは、度数法(例:360度)と弧度法(例:2πラジアン)がごっちゃにならないように気をつけましょう。

計算するときは、↓のサイト等を利用しましょう。

http://keisan.casio.jp/has10/SpecExec.cgi?id=system/2006/1161228774

新しいボスができました。

圧縮式要害矮星(Stronghold of Compressed Dwarf)

 知能が無くても拠点防衛で扱えるよう重力はそのままにお手軽サイズにまで押し込められた恒星。遠隔操作を駆使した原始惑星との連携と核融合パワーにより近づく者をエネルギーにする。

ずっとこのミラーボールを見ていると頭がおかしくなってきます。