ページ 11

東方紅魔郷のスペカ発動時のエフェクトについて

Posted: 2011年3月31日(木) 19:05
by tt
C言語でSTGをつくってます。Visual C++ 2010でDXライブラリを使っています。敵が特殊な攻撃をするときに、東方のスペルカードのような演出を加えたいと思っています。
そこで質問なのですが、東方紅魔郷のスペカ発動時の、画面右横から画像がでてきて、しばらくしたら拡大して消える(ちょっとわかりにくいですが、プレイしたことのある人ならわかるかと)っていうのは、具体的にどういうやり方をすればよろしいんでしょうか?

Re: 東方紅魔郷のスペカ発動時のエフェクトについて

Posted: 2011年3月31日(木) 19:16
by h2so5
手順としては、
画面右の見えないところに画像を表示

少しずつ左へ移動

一定の座標に達したら画像を拡大しながら不透明度を下げる

という方法があります。

Re: 東方紅魔郷のスペカ発動時のエフェクトについて

Posted: 2011年3月31日(木) 20:41
by tt
ご回答ありがとうございます。回答のとおり関数を作ってみました。「不透明度を下げる」というのがよくわからなかったんですが・・・。

コード:

void Spell(){
	int counter=0;
	counter++;
	int x=400;
	int y=400;
	if(counter<50){
		x= x-counter*2;
		DrawGraph(x,y,Spell1,TRUE);
	}
	if(counter>60 && counter<150){
		DrawRotaGraph( x , y , (double)(counter-60)*0.01 , PI*((double)(counter-60)*0.001) , Spell1 , TRUE  ) ;
	}
}
しかし、画像が途中でとまってしまい、うまくいきませんでした。どこがいけないのでしょうか?

Re: 東方紅魔郷のスペカ発動時のエフェクトについて

Posted: 2011年3月31日(木) 21:30
by h2so5
1行目のint counter=0;によって
Spell()が呼ばれる度にcounterの数値が0に初期化されるため、
常にcounterが1になっているからです。

x,yも同様で毎回初期化されてしまいます。

また、このコードだと counter が50~60 の時は何も描画されなくなってしまいます。

Re: 東方紅魔郷のスペカ発動時のエフェクトについて

Posted: 2011年3月31日(木) 22:24
by tt
すいません・・・。ではどこを直せばよいでしょうか・・・?

Re: 東方紅魔郷のスペカ発動時のエフェクトについて

Posted: 2011年4月01日(金) 00:15
by h2so5
グローバル変数にするか静的変数にすれば一応動きます。
3変数を構造体に格納してグローバル変数にするのが現実的だと思います。

Re: 東方紅魔郷のスペカ発動時のエフェクトについて

Posted: 2011年4月02日(土) 18:50
by tt
あれからいろいろやってみましたがなんとか実現できました!ありがとうございます!