グラディウスみたいなオプション

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
mari

グラディウスみたいなオプション

#1

投稿記事 by mari » 16年前

グラディウスみたいなオプションみたいに
ボンボンを自機の周りにくるくる時計回りに回らせたいのですが
どうすればいいでしょうか?ちなみに龍神録50章を参考に改造してます。

バグ

Re:グラディウスみたいなオプション

#2

投稿記事 by バグ » 16年前

自機の中心座標を求めて、そこを中心とする円の円周上の点へオプション(?)を描画してやればいいかと思います。
ただし、この時に算出される座標はあくまでもグラフィックの中心ですので、場合によっては描画時に補正してやる必要があるかもしれません。

mari

Re:グラディウスみたいなオプション

#3

投稿記事 by mari » 16年前

オプションをその自機の中心座標の円周上に回すにはどうしたら・・?

バグ

Re:グラディウスみたいなオプション

#4

投稿記事 by バグ » 16年前

三角関数はご存知でしょうか?
三角関数を利用すれば、任意の角度の円周上の座標を求める事ができます。
詳しくは下記URLを参照ください。非常に分かりやすく説明されています(^-^)

http://ab.sinryow.net/lesson/sankaku.html

pooka

Re:グラディウスみたいなオプション

#5

投稿記事 by pooka » 16年前

DXライブラリにDrawRotaGraph2という関数があるようなのでこちらを参考にしてみてはどうでしょうか?
ttp://dixq.net/g/#53

#追記
すみません。よく見たらオプションとしては使えないかもしれないので、バグさんが示された方法でやってみてください。

バグ

Re:グラディウスみたいなオプション

#6

投稿記事 by バグ » 16年前

こんな感じかな?
プレイヤーの座標を円の中心として、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:グラディウスみたいなオプション

#7

投稿記事 by バグ » 16年前

ちょっと修正しますm(__)m

×:角度は0度の時にプレイヤーの真横(右側)になり、1度増える毎に時計周りに座標が移動します。

○:角度は0度の時にプレイヤーの真横(右側)になり、プラス方向へ変化すると時計周りに座標が移動します。

mari

Re:グラディウスみたいなオプション

#8

投稿記事 by mari » 16年前

え~っと・・というと
自機を中心にオプション画像自体を回転させれば出来るということですか?
それとも、回る部分の座標を指定して回転させたほうがいいということなのですか?

バグ

Re:グラディウスみたいなオプション

#9

投稿記事 by バグ » 16年前

???
画像を回転させても、表示位置は変わらないのでは?
その場でクルクル回転させるのが望みの動きなのでしょうか?

mari

Re:グラディウスみたいなオプション

#10

投稿記事 by mari » 16年前

ごめんなさい。更新してなかったのでNo:35994以降を読んでませんでした。
更新してバグさんのプログラムをみたら理解できました。ありがとうございます!

バグ

Re:グラディウスみたいなオプション

#11

投稿記事 by バグ » 16年前

というか、そもそもグラディウスのオプションって、プレイヤーの後を付いてくるような動きではなかったでしたっけ?(^_^;)

バグ

Re:グラディウスみたいなオプション

#12

投稿記事 by バグ » 16年前

解決したようでなによりです(^-^)

閉鎖

“C言語何でも質問掲示板” へ戻る