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

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

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

#1

投稿記事 by tt » 14年前

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

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

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

#2

投稿記事 by h2so5 » 14年前

手順としては、
画面右の見えないところに画像を表示

少しずつ左へ移動

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

という方法があります。

tt

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

#3

投稿記事 by tt » 14年前

ご回答ありがとうございます。回答のとおり関数を作ってみました。「不透明度を下げる」というのがよくわからなかったんですが・・・。

コード:

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  ) ;
	}
}
しかし、画像が途中でとまってしまい、うまくいきませんでした。どこがいけないのでしょうか?

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

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

#4

投稿記事 by h2so5 » 14年前

1行目のint counter=0;によって
Spell()が呼ばれる度にcounterの数値が0に初期化されるため、
常にcounterが1になっているからです。

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

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

tt

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

#5

投稿記事 by tt » 14年前

すいません・・・。ではどこを直せばよいでしょうか・・・?

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

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

#6

投稿記事 by h2so5 » 14年前

グローバル変数にするか静的変数にすれば一応動きます。
3変数を構造体に格納してグローバル変数にするのが現実的だと思います。

tt

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

#7

投稿記事 by tt » 14年前

あれからいろいろやってみましたがなんとか実現できました!ありがとうございます!

閉鎖

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