グラディウスみたいなオプションみたいに
ボンボンを自機の周りにくるくる時計回りに回らせたいのですが
どうすればいいでしょうか?ちなみに龍神録50章を参考に改造してます。
グラディウスみたいなオプション
Re:グラディウスみたいなオプション
自機の中心座標を求めて、そこを中心とする円の円周上の点へオプション(?)を描画してやればいいかと思います。
ただし、この時に算出される座標はあくまでもグラフィックの中心ですので、場合によっては描画時に補正してやる必要があるかもしれません。
ただし、この時に算出される座標はあくまでもグラフィックの中心ですので、場合によっては描画時に補正してやる必要があるかもしれません。
Re:グラディウスみたいなオプション
三角関数はご存知でしょうか?
三角関数を利用すれば、任意の角度の円周上の座標を求める事ができます。
詳しくは下記URLを参照ください。非常に分かりやすく説明されています(^-^)
http://ab.sinryow.net/lesson/sankaku.html
三角関数を利用すれば、任意の角度の円周上の座標を求める事ができます。
詳しくは下記URLを参照ください。非常に分かりやすく説明されています(^-^)
http://ab.sinryow.net/lesson/sankaku.html
Re:グラディウスみたいなオプション
DXライブラリにDrawRotaGraph2という関数があるようなのでこちらを参考にしてみてはどうでしょうか?
ttp://dixq.net/g/#53
#追記
すみません。よく見たらオプションとしては使えないかもしれないので、バグさんが示された方法でやってみてください。
ttp://dixq.net/g/#53
#追記
すみません。よく見たらオプションとしては使えないかもしれないので、バグさんが示された方法でやってみてください。
Re:グラディウスみたいなオプション
こんな感じかな?
プレイヤーの座標を円の中心として、radiusをその円の半径として計算しています。
角度は0度の時にプレイヤーの真横(右側)になり、1度増える毎に時計周りに座標が移動します。
つまり、90度の場合はプレイヤーの真下、180度の場合は左側、270度の場合は真上になります。
プレイヤーの座標を円の中心として、radiusをその円の半径として計算しています。
角度は0度の時にプレイヤーの真横(右側)になり、1度増える毎に時計周りに座標が移動します。
つまり、90度の場合はプレイヤーの真下、180度の場合は左側、270度の場合は真上になります。
#include <cmath> // cos、sin関数を使用するために必要 // float px = プレイヤー画像の中心X座標 // float py = プレイヤー画像の中心Y座標 // float radius = プレイヤーとオプションの距離 // float angle = プレイヤーに対してのオプションの表示位置(角度) // float* ox = オプション画像の中心X座標の格納先へのポインタ // float* oy = オプション画像の中心Y座標の格納先へのポインタ void calcOptPos(float px, float py, float radius, float angle, float* ox, float* oy) { // 角度をラジアンに変換する float rad = angle / 180.0f * 3.1415926535f; // オプションのXY座標を算出する *ox = radius * (float)cos(rad) + px; *oy = radius * (float)sin(rad) + py; }
Re:グラディウスみたいなオプション
ちょっと修正しますm(__)m
×:角度は0度の時にプレイヤーの真横(右側)になり、1度増える毎に時計周りに座標が移動します。
○:角度は0度の時にプレイヤーの真横(右側)になり、プラス方向へ変化すると時計周りに座標が移動します。
×:角度は0度の時にプレイヤーの真横(右側)になり、1度増える毎に時計周りに座標が移動します。
○:角度は0度の時にプレイヤーの真横(右側)になり、プラス方向へ変化すると時計周りに座標が移動します。
Re:グラディウスみたいなオプション
え~っと・・というと
自機を中心にオプション画像自体を回転させれば出来るということですか?
それとも、回る部分の座標を指定して回転させたほうがいいということなのですか?
自機を中心にオプション画像自体を回転させれば出来るということですか?
それとも、回る部分の座標を指定して回転させたほうがいいということなのですか?
Re:グラディウスみたいなオプション
ごめんなさい。更新してなかったのでNo:35994以降を読んでませんでした。
更新してバグさんのプログラムをみたら理解できました。ありがとうございます!
更新してバグさんのプログラムをみたら理解できました。ありがとうございます!