そろそろ遺跡から出たかな?と思いきや…まっだ遺跡の中をやってます。とはいっても
遺跡のマップをどうこうしているというわけではなく、システムや外に出てからも関わってくるところを
なんとかかんとかしているところ。
主にやったのは、モンスターが塵になるエフェクト。敵キャラの画像が粉々にぶわあーっと舞い上がるアレ。
ウディタを触り始めた時はいや無理っしょあんなのと思ってほぼチャレンジすらしませんでした。
なので、モンスターを倒したら塵になった音と共に画像が薄くなって消滅する、という演出しか作らなかったのです。
…が、あれから月日も経過して今ならできるか?その処理ってその時にしか使われてないから、
そこを変えせいで他がずれてバグバグ、ということはないだろう。やってみるか…やってみるか…?
まず…どう考えればいいのか。敵キャラクターの画像は待機中のアニメとダメージ受け中と、
カイさんだったら会話中や殺されて倒れるシーンのアニメーションも全部1枚の画像になっており
それを分割してその中の1枚を表示しています。
だが、つまりは粉々にして舞い上がらせるにはピクチャの分割という行為が必要そう。
そのためには敵キャラを元から分割して表示していたら非常にややこしくなる。
というわけでまずは塵になる時の画像だけ別で1枚用意しました。
次に…既に表示されているピクチャを分割して粉々にはできないので、
左上から順にパズルのようにちょっとずつ小さな破片にした大量のピクチャを敷き詰めて
塵になる時の画像をもう1回表示させ、その下に元々あった1枚のピクチャは消して敷き詰めたバラバラのピクチャを
舞い上がらせることにしたら…。
できた…ような?気がする?なんか違うけど、まあただ画像が薄くなるよりかはマシかな…。
まずピクチャの大きさを取得し、それを分割し、それぞれを別のピクチャで表示させているので
この粉々ピースは全部で600ぐらいになってます。つまりゲーム画面に600枚以上のピクチャ、絵が
表示されているということです。
元はキャラの大きさによっては1000を超えることもあり、そんなに表示したら重くなるのは当然で
特にピクチャを全部消去するときにゲームが少し止まってしまったので
ピースを少し大きくする=ピクチャ数を減らすとか、その他のちょっとごまかしごまかしでなんとかしました。
なんとかなったとは言っていない。
で、今は「FIGHT」を選んだ時の挙動を作っているところです。え、できていなかったの?
いや、今までのままでも問題なく動きはするんだけど絶対に直した方がいい状態なのである…。
元々バトルシステムを作るのをずっと先延ばしにしていてやっと四苦八苦しながら作って
それをベースにほかの雑魚エンカバトルを作ったりしました。
フラウィのバトル画面(チュートリアル)はそれをベースにしつつ最後の方に作った気がします。
だが、その最初に作ったバトルシステムの「FIGHT」はどういうわけか敵キャラごとに別々のものを動かしており
(つまり敵とのバトルの中にFIGHTが組み込まれており外から呼び出されていない)、
非常に効率が悪いかつ融通の利かないものになっているのです。
このまま敵とのバトルの種類が増えれば増えるほど、修正がメンドーになっていく。
敵の種類がまだ10ぐらいしかない今が修正時…!!
ってかフツーに考えて、バトルのプログラムってコマンド選択⇒たたかうを選択⇒たたかうの処理を実行⇒
結果を取得 とすりゃいいのに、なんでそんなややこしくもイミフなことに?
例えば、ゼニガメの たいあたり! で敵のHPのバーがダメージを受けて縮んでいくという処理は
あらゆる場面で使うんだから別で作って呼び出すのがセオリーに決まっているのに、なぜか「たいあたり」のモーションの次に
HPのバーが減る処理を一緒に書いている、という感じ。これを技の種類の分だけ書いているのである。
どう考えても、HPのバーが減る処理は使いまわすべきだ。
…だが、最初にシステムを作った時点ではどうしてもどうしようもわからなかったのだ…。
「FIGHT」を選んだら攻撃のためのバーが表示され、背景も表示され、バーは自動で動き、決定キーを押せば
バーが止まり攻撃、バーが右端まで行ってしまったらMISS扱いとなりボタンを押さなくてもバトルは進行、
フラグによってはそのMISSという行為によって敵のセリフが変わる、挙句の果てに武器によっては
バーの数が変わる、バーの位置によって攻撃力も色も音も変わる…こんなの、作れなかったのです。
で、まあ、まだ作れてないんですが、とりあえず武器に応じてバーの速さ、バーの本数、バーの間隔を
呼び出すってのはできたのでここから作っていこうと思います。
|