スペカのエフェクト 

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

スペカのエフェクト 

#1

投稿記事 by tt » 14年前

前に似たような質問をしたのですが・・・。
http://dixq.net/forum/viewtopic.php?f=3&t=8160
この質問の段階では,最終的に拡大処理して不透明度を下げるというところまで追いつかず,ほったらかしにしていました(途中まででそれなりのものはできたのですが)。
現在,もう1つスペカのエフェクトをつくってみようとおもい,次のような関数をつくっています。

コード:

void SpellEfect(int img){
    int toumeido=128;
	spell.x=200;
	spell.y=300;
	spell.flag=1;
	if(spell.flag==1){
		spell.counter++;
		toumeido--;
		SetDrawBlendMode( DX_BLENDMODE_ALPHA , toumeido ) ;
		DrawRotaGraph(spell.x,spell.y,spell.counter*0.1,0,img,TRUE);
	}
	if(spell.counter==10){
		spell.flag=0;
		SetDrawBlendMode( DX_BLENDMODE_NOBLEND , 0 ) ;
		spell.counter=0;
	}
}
内容は,画面中央に縮小された画像がでて,だんだん拡大されて透明になっていき,最終的にはきえるというものです。引数に画像ハンドルを渡して呼んでいます。
1回この関数を使ってから2回目以降使えるようにするために,counterが10を超えたら0に戻すようにしました。しかしこれだと,何度も巻き戻されているような感じになり,ループしてしまいうまくいきません。たぶん,10になったら0に戻しているので,ループしているのだと思います。
10になったらcounterの値を0にして,counter++;を解除するにはどうすればいいでしょうか?ライブラリはDXライブラリです。

アバター
h2so5
副管理人
記事: 2212
登録日時: 15年前
住所: 東京
連絡を取る:

Re: スペカのエフェクト 

#2

投稿記事 by h2so5 » 14年前

そもそもこのコードだと、常に不透明度127で描画しているので
「だんだん透明になる」という部分が実現されていません。
counterを増加させても画像が拡大されていくだけです。

使いまわしたいのなら画像ハンドルやcounter、flagなどを構造体にまとめてその単位で扱ったほうが便利です。

閉鎖

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