ページ 1 / 1
東方紅魔郷のスペカ発動時のエフェクトについて
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
あれからいろいろやってみましたがなんとか実現できました!ありがとうございます!