溜めのエフェクト(弾幕追加しました)

アバター
Tatu
記事: 445
登録日時: 14年前
住所: 北海道

溜めのエフェクト(弾幕追加しました)

投稿記事 by Tatu » 14年前

今回は溜めのエフェクトについて書いてみました。

弾幕は投稿した動画の確認ができていないため無しです。
弾幕は動画の確認ができたのでコメントからどうぞ。

まずは画像を準備します。

GV.hに以下を追加

CODE:

GLOBAL int img_eff_charge;//溜めエフェクト画像
load.cppのload()に以下を追加

CODE:

	img_eff_charge = LoadGraph( "../dat/img/effect/bkefct.png");
次にエフェクトの処理について書いていきます。

最初に溜めエフェクトを管理する変数の用意をします。
一つしかいらないときは定義は不要で変数を配列にする必要もありません。

define.hに以下を追加

CODE:

//溜めエフェクトの最大数
#define CHARGE_EFFECT_MAX 8
struct.hに以下を追加

CODE:

//溜めエフェクト
typedef struct{
	int flag,cnt;
	double x,y;
}charge_effect_t;
GV.hに以下を追加

CODE:

GLOBAL charge_effect_t charge_effect[CHARGE_EFFECT_MAX];//溜めエフェクト
エフェクトの登録にかかわる関数をつくっていきます。

空き番号を探す関数、エフェクト管理の登録用の関数、エフェクトの登録を計算する関数の3つです。

effect.cppに以下を追加

CODE:

//溜めエフェクトの空き番号を探す関数
int search_charge_effect(){
	for(int i=0;i=120){
				charge_effect[i].flag=0;
			}
			charge_effect[i].cnt++;
		}
	}
}
エフェクト画像一枚一枚の処理をcalc_effect()に追加していきます。

calc_effect()に追加

CODE:

				case 5://溜めエフェクト
					if(effect[i].cnt120){
						effect[i].flag=0;
					}
					break;
effect_main()に追加

CODE:

	calc_charge_effect();//溜めエフェクトの計算
溜めエフェクトが描画されるようにします。

graph.cppのgraph_main()に以下を追加

CODE:

	graph_effect(5);//溜めエフェクトの描画
最後に起動後2回目以降のゲームに影響が出ないように初期化処理を入れます。
こういう処理はリプレイなどで乱数を正確にしたいときに重要になります。

龍神録のリプレイバグの原因に乱数を使用するボムの揺れが
次回のプレイ開始時に残っていたことがありました。

これについては乱数を使わない式で処理していると思い込んでました。

ini.cppのini()に以下を追加

CODE:

memset(charge_effect,0,sizeof(charge_effect_t)*CHARGE_EFFECT_MAX);
boss_shotH.cppに以下を追加

CODE:

extern void enter_charge_effect(double x,double y);
これで溜めエフェクトが出せるようになりました。
最後に編集したユーザー Tatu on 2011年2月05日(土) 19:15 [ 編集 1 回目 ]

アバター
Tatu
記事: 445
登録日時: 14年前
住所: 北海道

Re: 溜めのエフェクト

投稿記事 by Tatu » 14年前

動画の確認ができたのでコメントにて追加します。
今回の弾幕は「プラマイシステム」と「鬼は外、福は内」です。

[nico]http://www.nicovideo.jp/watch/sm13498238[/nico]
[nico]http://www.nicovideo.jp/watch/sm13503503[/nico]
二つ目については へろり さんの日記で2/3が節分だったことを思い出しつつ、
溜めエフェクトのテスト用に作成しました。

弾幕関数
► スポイラーを表示