ページ 11

敵の画像を左右に回転させる方法について

Posted: 2014年4月04日(金) 14:45
by samusu0905
前回、似たような事を聞いたんですが。敵の画像を左右に回転させるにはどうすればよいですか?
問題なのは、表示処理のところで回転処理を書くのか、敵の発生処理のところで回転処理を書くのか。
教えてほしいです。お願いします。DxLibライブラリィではないので、そのところも気を付けながらお願いします。
因みに使用中のライブラリィには回転処理のようなものはありましたが、書き方が分かりませんでした。
コードなので
提示しておきます。

コード:


void	gsDraw2DPartEx(gsTexture texture, 
					   int sx, int sy, int sw, int sh, int tx, int ty, int tw, int th, 
					   float angle, gsColor color);  /*float angleが多分角度 、その後にあるgsColor colorが色を表す*/

このコードを見て処理の方法が分かる人がいればお願いします。
自分はこのコードを見ても良く分かりませんでした・・(途中まで書きましたがうまくいきませんでした)。

Re: 敵の画像を左右に回転させる方法について

Posted: 2014年4月04日(金) 15:46
by N.R
途中まで書いてうまくいかなかったコードを見せた方がいいと思いますよ

Re: 敵の画像を左右に回転させる方法について

Posted: 2014年4月04日(金) 15:55
by samusu0905
了解しました。

Re: 敵の画像を左右に回転させる方法について

Posted: 2014年4月04日(金) 16:02
by samusu0905
表示処理のところにはこんな感じのコードを書きました。

コード:

//敵2の表示-----------------------------------------------------------------------------------
void Enemy2Draw(void)
{
	int i;

	for(i=0; i<ENEMY2_MAX; i++)
	{
		if( gEnemy2[i].flg == ON)
		{
			Enemy2DrawOne(i);			//敵2の表示の実施を行う
		}
	}
}


//敵2の表示の実施------------------------------------------------------------------------------
void Enemy2DrawOne(int i)
{
	if( gEnemy2[i].type == TYPE2)
	{
                //敵2の通常表示
		gsDraw2D( sEnemy2, (int)gEnemy2[i].x, (int)gEnemy2[i].y);                

                //敵2の回転角度
		gsDraw2DPartEx( sEnemy2, (int)gEnemy2[i].x, (int)gEnemy2[i].y, 
			(int)gEnemy2[i].w, (int)gEnemy2[i].h, (int)gEnemy2[i].tx, (int)gEnemy2[i].ty,
			(int)gEnemy2[i].tw, (int)gEnemy2[i].th, (float)gEnemy2[i].angle, 0x80ffffff);     
	}
}
ここからどのような処理を付け足せばよいですか?
さっきプログラムを書いてて思いましたが、発生処理のところには書く必要がないと思いました。
お願いします。

Re: 敵の画像を左右に回転させる方法について

Posted: 2014年4月04日(金) 17:10
by N.R
まずうまくいかなかったというのはどのようにいかなかったのでしょうか

学校内で使っているライブラリならドキュメントがあるはずです。
関数の使い方を確認してください

予想するなら
 gsDraw2D は通常の描画
 gsDraw2DPartEx は回転を含んだ描画
だと思うので2つともある必要はないと思います。

Re: 敵の画像を左右に回転させる方法について

Posted: 2014年4月04日(金) 17:41
by usao
>学校内で使っているライブラリならドキュメントがあるはずです。
>関数の使い方を確認してください
何でこれを先にやらないのでしょうか?
そして何故そのライブラリが流通している世界にいる人間に訊かないのでしょうか?

何らかの事情により上記のようなことが不可能な立場におられるのだとしたら,
とりあえずgsDraw2DPartEx()という関数の使い方がわからないのであれば,
いきなり目的のプログラムに組み込むのでなく,
画像の回転表示に最低限必要な処理のみを書いたプログラムを別途用意して
その上でこの関数の引数の意味などを探った方が早いと思います.

ドキュメントで調べられないのであれば
仮にその関数の角度と思われる引数の指定によって画像の回転表示ができるのだとしても
例えばその角度引数の単位がdegreeなのかradianなのか等も未知なのですから
引数値をいろいろ変えてみて結果の挙動を見て推測するしかありません.

何がどううまくいっていないのかわかりませんが,例えば,
gsDraw2DPartEx()関数を用いて,gsDraw2D()と同じ表示を実現できますか?
それともそれ以前の段階なのですか?(全く画像が表示されないとか,コンパイルが通らないとか,プログラムが死ぬとか)

Re: 敵の画像を左右に回転させる方法について

Posted: 2014年4月04日(金) 18:38
by samusu0905
N.Rさん>>回答有難うございます。
提示したプログラムですが、gsDraw2DとgsDraw2DPartExを両方使っているわけではありません。
学内のドキュメントは確認していませんが、あるかどうかまだわかりません。

usaoさん>>回答有難うございます。
確かにドキュメントを確認していなかった自分が悪いと思います。
まあ、usaoさんの言う通りですね。同じライブラリィを使用している人に聞くべきですね。
後、何がどううまくいかないのかについてですが、N.Rさんの言った通りgsDraw2DとgsDraw2DPartExの両方を使う必要はないと思いました。
自分がやりたいことは、表示の方で、発生したときに敵が回転しながら移動するという処理をしたいのです。

まずは、お二人の言った言った通り、ドキュメントの確認から行います。

Re: 敵の画像を左右に回転させる方法について

Posted: 2014年4月04日(金) 18:44
by samusu0905
usaoさん>>gsDraw2DPartEx()の関数を用いて、gsDraw2D()関数と同じように表示させることはまだできていません。というより、今はgsDraw2DPartEx()関数を使って表示させようとしている途中です。ですが、うまく表示できていません。

Re: 敵の画像を左右に回転させる方法について

Posted: 2014年4月04日(金) 18:51
by samusu0905
ドキュメントを確認しましたが、ありませんでした・・。

Re: 敵の画像を左右に回転させる方法について

Posted: 2014年4月04日(金) 19:11
by N.R
突っ込みどころは多々ありますが

ドキュメントがないのならば使えないと思いますよ(他の人はできるでしょうけれど)
DxLibなどドキュメントもあり使い方を説明できる人がいるものを使う方がよいですね

Re: 敵の画像を左右に回転させる方法について

Posted: 2014年4月04日(金) 19:53
by samusu0905
わかりました。色々と有難うございます。
自分なりに工夫して回転処理をやってみます。

Re: 敵の画像を左右に回転させる方法について

Posted: 2014年4月04日(金) 21:41
by みけCAT
自分の予想を貼っておきます。

コード:

void gsDraw2DPartEx(
	gsTexture texture, // 描画するテクスチャ
	int sx, // 描画するテクスチャの中の描画する範囲の端のx座標
	int sy, // 描画するテクスチャの中の描画する範囲の端のy座標
	int sw, // 描画するテクスチャの中の描画する範囲の幅
	int sh, // 描画するテクスチャの中の描画する範囲の高さ
	int tx, // 描画先の範囲の端のx座標
	int ty, // 描画先の範囲の端のy座標
	int tw, // 描画先の範囲の幅
	int th, // 描画先の範囲の高さ
	float angle, // 何かの角度?
	gsColor color // 透過色か何か?
);
ほかに「それっぽい」関数はありませんか?

Re: 敵の画像を左右に回転させる方法について

Posted: 2014年4月04日(金) 22:53
by ISLe
gsDraw2DPartExも検索するとバイドゥの質問サイトが引っ掛かりますが詳しい使い方までは分かりませんね。

転送先・転送元の順らしいことが分かります。
gsColor値は即値よりGSARGBマクロで求めるほうが良いのかもしれません。

Re: 敵の画像を左右に回転させる方法について

Posted: 2014年4月05日(土) 15:44
by samusu0905
みけCATさん>>回答有難うございました。
プログラムとおりだと思います。
一応提示しますが、
他の回転処理はこれぐらいですね。

コード:

      //画像を左回りとした関数
void	gsDraw2DEx	  (gsTexture texture,
					   int sx, int sy, int sw, int sh, 
					   gsColor color = GSARGB(255,255,255,255) );
これ以外で[それっぽい]関数は見当たりませんでした。

ISLeさん>>そうですね。
実はみけCATさんの質問の方にも提示しましたが、
もう一つ似たような関数にはgsColor値をGSARGBマクロで求める関数がありました。
この関数もまた一つ前に提示した関数と同じく、画像を左回りとした関数でした。(↑のgsDraw2DEx関数です。)
確かに、GSARGBマクロで求めたほうが良さそうですね。回答有難うございました。

Re: 敵の画像を左右に回転させる方法について

Posted: 2014年4月06日(日) 12:30
by samusu0905
あれから色々と試しました。gsDraw2DPartEx()関数で敵を表示させることに成功しました。
解決ですね。後は自分の感覚で回転処理を行えば大丈夫です。
皆さん色々と教えていただき有難うございました。
敵の画像も360°ぐらいに回転させることに成功しています。
色も丁度いい具合に色付けできました。