ヒットエフェクトとヒット音

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

ヒットエフェクトとヒット音

投稿記事 by Tatu » 14年前

今回はヒットエフェクトとヒット音について書きます。

実際の龍神録では中ボス登場時に雑魚を攻撃したときに、効果音が変わっていますが
これはヒット音とエフェクトの処理を一つの関数にして雑魚とボスの両方で
全く区別なしに使いまわしているからだと思います。
これにより、ボス登場時にはHPが0でヒット音はザコにあててもボスのHPが少ないときのものになるというわけです。

ここではザコにあててもボスのHPが低いときの音にはならないようにします。


最初に効果音を用意します。
ザコのヒット音はすでに実装しているのでボスの体力が低いときの効果音を用意します。
効果音の音量を変えるChangeVolumeSoundMemの数字は0~255の範囲で設定してください。

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

CODE:

	sound_se[10]=LoadSoundMem("../dat/se/final_hit.wav");

CODE:

	ChangeVolumeSoundMem( 64, sound_se[10] ) ;
次に弾が当たった時に出るヒットエフェクトの画像を用意します。。

GV.hに以下を追加

CODE:

GLOBAL int img_eff_hit;//ヒット時のエフェクト画像
load.cppのload()に以下を追加

CODE:

	img_eff_hit = LoadGraph( "../dat/img/enemy/hit.png");

効果音については
ボスに当たったとき、HPの最大に対する割合がある値以下ならばボスのHPが少ないときの音にする。
そうでないならば、それ以外の時のヒット音にする。

次にヒットエフェクトですがこれは効果音が鳴るときに同時に登録されるようにします。
エフェクトは弾ひとつにつきひとつなのでこれまでの消滅エフェクトや溜めエフェクトとは違い
直接登録することにしました。

これらの処理を関数にまとめました。この関数は
ヒット判定に関わっているのでout.cppに追加します。

CODE:

extern int search_effect();

//ヒット時の効果音を含むエフェクト登録処理
//numが1の時、ボスに当たった時の処理になる
void enter_hit_effect(int num,double x,double y){
	int k;
	//効果音処理
	if(num == 1 && boss.hp 0){
            for(s=0;s0){
                    if(out_judge_cshot(i,s)){//自機ショットと敵が当たっていれば
                        cshot[i].flag=0;//その自機ショットを消す
                        hit_enemy(s,cshot[i].power);
						enter_hit_effect(0,cshot[i].x,cshot[i].y);
						break;
					}
				}
			}
			//ボスが出現していて、描画しないフラグがオフで、ショット中なら
			if(boss.flag==1 && boss.graph_flag==0 && boss.state==2){
				if(out_judge_cshot_boss(i)){
					cshot[i].flag=0;
					hit_boss(cshot[i].power);
					enter_hit_effect(1,cshot[i].x,cshot[i].y);
				}
			}
		}
	}
}

ヒットエフェクトの計算は
最初の角度はランダムにしておいてあとはぐるぐる回しながら
画像を薄く、小さくし、時間がたったら消えるというようにします。

effect.cppのcalc_effect()に
に以下を追加

CODE:

				case 6://ヒットエフェクト
					effect[i].ang+=PI2/60;
					effect[i].brt-=1;
					effect[i].r-=1.0/60.0;
					effect[i].cnt++;
					if(effect[i].cnt>60){
						effect[i].flag=0;
					}
					break;

あとはgraph.cppのgraph_mainに以下を追加して終わりです。

CODE:

	graph_effect(6);//ヒットエフェクトの描画




他の人の日記を読んでの感想

Softya(ソフト屋)さんの講座は
11章になったそうですね。不定期でも結構頻繁に更新されていますね。

BEATさん

低確率は魅力的だというようなことを書いてましたが
「ある行為の確率の表示で小数点以下が切り捨てられているようだが実は0ではないので
気の遠くなるほどやればいつかは成功する」なんて要素を本当に実装してしまうことはないですよね?

以前の攻撃画像は上下方向を向いて岩とかを攻撃したらプレイヤーの左側にすっ飛んで行きそうだ。
二番目くらいのボスの攻略方法はそれになるのだろうか?最初のボスはハンマーでぼっこぼこだろうなあ。
敵がカビビリンって言われるのが嫌だったら、そういうキャラを別に作ってしまってもよいのでは。
ビリンという響きから電気を帯びててハンマーを強化しないと逆にダメージを受けるだけの敵キャラとか。

SAIさん
まずは試験合格おめでとうございます。
新たな弾幕さらに10個か。ほほう。

MNSさんのRTS
ピクミンみたいに何かアイテムをとって自分の基地に運ぶとユニットの数が増えたり、
他にもユニットの種類が増えるとかそういうのはどうでしょう。
ラストは敵ユニットの全滅以外にも敵の基地に攻め込んでコアを奪ったり、
あとは全戦力のうち味方が2/3以上を占めているときに終了宣言をすると勝ちになるとか


ひよこさん
流星書記の制作を再開されたとか。
心が折れないようにしつつデバッグがんばってください。

アバター
SAI
記事: 115
登録日時: 14年前

Re: ヒットエフェクトとヒット音

投稿記事 by SAI » 14年前

ありがとうございます。
弾幕作り頑張りますよ!
今度は魅せに力を入れたいなあ・・・(希望)

アバター
MNS
記事: 35
登録日時: 14年前

Re: ヒットエフェクトとヒット音

投稿記事 by MNS » 14年前

どうもです。

RTSの基本はそれですね。ピクミンはシンプルなシステムに改良されていますが、
一般的なRTSは、ピクミンのペレットにあたるものが複数あり―石、鉄、石炭など―、
その資源の種類によって、生産できるユニットの種類が変わります。
(食料+木→弓兵、石炭+鉄→銃兵など)

勝利条件に関しては、そのような勝利方法がとてもよさそうです。
参考になります^ー^ まあでも、未だそこらへんを製作できる段階に入ってすらいないのですが…

私は弾幕STGには疎いので、とくにいえることもないのですが、
TatuさんやSoftyaさんが書かれているような、コードを絡めた講座は、
(そして私の講座もどきも…)きっといつか誰かしらの役に立つ日がくると思うので、
お互い頑張っていきましょう !