レーザーの作りのコツ

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
アバター
YYSS
記事: 125
登録日時: 9年前
連絡を取る:

レーザーの作りのコツ

#1

投稿記事 by YYSS » 8年前

STGでカッコイイ?レーザーを作ろうと思い、色々と頑張っているのですが、なかなか思い通りのレーザーが作れません・・・

理想は添付画像のようなレーザーを作りたいと思っているのですが、
私の腕がまだまだ未熟なので微妙なレーザーが出来上がります・・・;;、


加算合成描画でレーザー画像を等間隔で配置していき、
画像と画像の中間にも画像を配置し、レーザーが濃くなるようにしているのですが、なんか出来がイマイチです

ソースはこんな感じです

コード:

void C_Base :: Move(){

	int XX = CEN_X, YY	= CEN_Y;
	static double ang;
	static int count	= 0, num	= 0;

	SetDrawMode( DX_DRAWMODE_BILINEAR );
	SetDrawBlendMode( DX_BLENDMODE_ADD, 255 );
	DrawRotaGraph( (int)XX, (int)YY, Rand( 0.6, 0.8 ), 0, Spark, true );

	
	if( count < 60 ){

		if( count == 1 ){
			ang	= Rand(0, 360);
		}
		DrawLine( XX, YY, (int)(XX + ( 1000 * cos2(ang) ) ), (int)(YY + ( 1000 * sin2(ang) )), White );

	}
	else if( count >= 60 ){

		if( count == 60 ){
			PlaySoundMem( RaySE, DX_PLAYTYPE_BACK );
		}
		for( int i=1 ; i<=num ; i++ ){

			if( i == num ){
				DrawRotaGraph( (int)(XX + ( (i * 48) * cos2(ang) ) ), (int)(YY + ( (i * 48) * sin2(ang) )), 0.5, 0, Spark, true );
			}
			else{
				SetDrawBlendMode( DX_BLENDMODE_ADD, 150 );
				DrawRotaGraph( (int)(XX + ( (i * 48) * cos2(ang) ) ), (int)(YY + ( (i * 48) * sin2(ang) )), 1.0, DegRad(ang), Ray[Rand(0,0)], true );
				DrawRotaGraph( (int)(XX + ( (i * 64) * cos2(ang) ) ), (int)(YY + ( (i * 64) * sin2(ang) )), 1.0, DegRad(ang), Ray[Rand(0,0)], true );
			}
		}
		num++;
	}
	if( count > 150 ){
		count	= 0;
		num		= 0;
	}

	count		+= 1;
}
言葉だと説明しきれないので、実行ファイルも添付しました。


パッと出現するレーザーではなく、射出系(段々長くなる)レーザーが作りたいのです。


レーザーの作り方のコツやテクニックを教えてくださると嬉しいです。
添付ファイル
20110618007.jpg
20110618003.jpg
ray.zip
(764.99 KiB) ダウンロード数: 24 回

アバター
Dixq (管理人)
管理人
記事: 1661
登録日時: 9年前
住所: 北海道札幌市
連絡を取る:

Re: レーザーの作りのコツ

#2

投稿記事 by Dixq (管理人) » 8年前

レーザーがカッコ良くなるかどうかは素材の良し悪しではないでしょうか。
ある程度画像をペタっと加算ブレンドするだけでレーザーっぽくなるのではないかと思います。
レーザーの周辺をギラギラさせて勢いを表現するなら、エフェクト素材を作って加算させると良いと思います。

カッコよくはないですが、画像をペタッと加算ブレンドしただけだと、添付画像2つ目のようになります。
敵が撃っている等間隔のレーザーのことです。
これなら館で配布している素材で作れます。

一方、画面右で自機が発しているレーザーは極細の光の周りにギラギラエフェクトを付けています。
これは、2~3ピクセルの白いラインの周辺に添付画像1つ目のようなエフェクト画像を自機から飛ばして表現しています。
よろしければ四聖龍神録Plusをご覧ください。
添付ファイル
kawa_hikari0.png
kawa_hikari0.png (50.62 KiB) 閲覧数: 556 回
lazer00.png

閉鎖

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