このページの解説では、以下のファイルを使用します。あらかじめダウンロードし、CatSystem2 の scene フォルダ内にしておいてください。
スクリプトを実行するには、CatSystem2 の「シーンリスト」ダイアログウインドウを使用します。ダイアログ下部にある「シーンスクリプトをコンパイル」ボタンを押してコンパイルし、シーンリストからスクリプトと同名のシーンをダブルクリックすることで実行できますので、以下の解説と照らし合わせながら動作を確認して下さい。
マクロファイル | ¯o.txt |
Download
|
|
スクリプトファイル | 0213_04.txt |
Download
|
|
※ダウンロードは、Downloadボタンを右クリックして、リンク先のファイルを保存して下さい。
※マクロファイルは、すでにあるファイルにそのまま上書きしてコピーしてください。
前回の更新からずいぶんと間が空いてしまいました。今後も不定期になる可能性がありますが、早めにきりの良いところまで進めたいと思います。気長にお付き合いください。
今回は 0214_04 の「後編」ということで、スクリプト自体は前回と同じものになります。
これまでは画像の表示や切り替えの方法などを説明してきましたが、今回はそこに「動き」を入れるための方法について説明したいと思います。
まずは単純なところから、画面上でキャラクターをまっすぐ移動させる方法から説明していきましょう。とりあえず下のスクリプトを見てください。
小雪 「これで身軽になりました」¥@ cg 0 bc01,6,1,0,5 draw 10 wait cg 0 move 20 550 200 ¥n
これはテキストを表示しながらキャラクターを表示(切り替え)し、表示が終わったら座標を移動させるという内容になっています。wait 命令が表示を終えるのを待っている箇所になりますので、キャラを移動させているのはその次の行ということになります。
スクリプトを見てみると、"cg 0 ……"と続き、頭の部分だけ見るとCGの表示命令と同じような感じになっていますね。CGを表示する場合は、この後にCGのファイル名が続くことになりますが、移動させる場合はその部分に move という命令を書くことになります。
もちろん、cg に限らず、eg や fg 、bg でも同様に書くことができます。基本的にすべての命令において、cg, bg, eg, fg のどれも共通の書き方で同じように処理できますので、使用の仕方についてそれぞれに差がないことを理解しておいてください。
さて、それでは move命令をマニュアルで確認してみると、後ろに続くパラメータは順番に、「動作フレーム数」「目標X座標」「目標Y座標」であることがわかります。上のスクリプトではパラメータ部分を青い色で表示してありますが、その最初の値(動作フレーム数)は 20 となっていますね。つまりこの場合は、移動にかける時間を 20/60秒、要するに 1/3秒としていることになります。
次に続く座標ですが、550 200 となっていますので、画面上の (550,200) という座標にキャラを移動させることになります。ただ最初のうちは「座標」と言われてもピンとこないかと思いますので、実際の画面で確認してみることにしましょう。
上の画面の左側が move命令を実行する直前の状態、そして右側が move命令実行後、つまり移動後の状態です。とりあえずこれで (550,200) の座標でキャラを表示させるとこんな感じの状態になることはわかりました。だけど正直なところ、感覚的に位置を理解するのに、単純に座標がどうこう言われても、いまいちピンときませんよね。そういう場合には実際のシステム上で表示を確認するためのモードがありますので、以下でそのやりかたを説明したいと思います。
これはスクリプトの解説ではなくどちらかというと Tips 行きの内容ですが、流れということで、上で説明したシーンを利用し実際のシステム上で画像の表示位置を確認するための方法を説明してみたいと思います。とりあえず、スクリプトを実際に実行させて上の移動後の状態まで進ませてから、キーボードの Qボタンを押してみてください。
上のような画面に切り替わりましたでしょうか。これは、スクリプトの動作確認中に各CGやプレーンなどの状態(座標等)をチェックするためのモードです。
これでまず、左下の緑色で囲われている部分に注目してください。(実際の画面では緑色の枠は表示されていません)
緑色の枠の中に、bg, cg, eg, fg, pl と並んでいるのがわかります。上の状態では pl が赤色で表示されていますが、これは現在 pl (プレーン)の状態を表示していることを表しています。座標等の情報は画面左上に表示されていますが、一番上には "Plane Info > pl 0" と表示されていますね。つまりこの情報はプレーン0番のものだということです。
今確認したい情報は、cg のほうですので、緑枠内の cg の部分を左クリックしてください。
どうでしょうか、少し画面が変化して上のような状態になったと思います。これが、CG0番の情報を表示している状態になります。
ここで次に、画像左上にある緑色の枠に注目してみてください。これがCGの表示されている座標になりますが、「x:550 y:200」と表示されているのが確認できます。(z座標は無視して構いません)
さて、ではこの状態のときに画面上のカーソルが文字の位置にかぶっていない位置でマウスの左ボタンを押し、そのままドラッグして動かしてみてください。
いかがでしょうか?
ドラッグしたマウスカーソルの動きに合わせて表示されているキャラ(小雪)も一緒に画面上で移動したかと思います。その際に左上に表示されている座標も、キャラの位置に合わせて更新されているのがわかりますね。
あとはスクリプトを組むときに実際に表示させたい位置にキャラを移動させ、そのときの座標をスクリプトに反映させれば、視覚的に判断してスクリプトでの座標を調整していけるかと思います。(現在の開発ツールでは、マウスでドラッグさせた座標を自動的にスクリプトに反映させることが出来ませんので、手作業でスクリプトを修正してください)
ちなみに、上の画像ではキャラ(小雪)の座標は (400,300) となっています。画面サイズは 800×600 となっていますので、そのちょうど中央ということです。
この画像の場合、画像の中央に当たる部分はこのキャラ(小雪)のだいたい口元付近になっています。これはあくまで画像を作り変換した際に、その位置を画像の基準位置に設定してあるためで、データの作り方次第では基準位置が変わることがあります。全てのケースにおいてスクリプト上で座標を画面中央に設定したときこのようにキャラが見えるとは限りませんのでご注意ください。
過去にあった大概のスクリプトツールにおいては、基準位置が画像の左上だったり、あるいは画像の中央が基準位置となっていることが多いかと思いますが、CatSystem2 では基準位置はデータ次第となっていますのでお気をつけください。
これまでのスクリプトでは、座標を指定する際に直接座標を指定したり、あるいは座標を省略し、それ以前の座標を引き継いで使用していました。
ですが実際のスクリプト作業では、「今キャラクターが表示されている位置」から「一定の距離だけ」移動させるケースが多く出てくるかと思います。そういった場合に常に直接座標を指定するのは非常に効率が悪くなります。また、一度組んだスクリプトを、あとで途中の座標を調整した場合、それ以降の座標も合わせて調整しなくてはならなくなるケースも出てくるかと思います。
それらの場合、相対座標でキャラクターの移動を指定すると、何かと都合が良くなることが多いです。具体的に相対座標というのはどういうものなのか、まずは下のスクリプトを見てください。
準 「そうかもね……」¥@ fg 1 fgd21s 310 100 cg 1 bj01,2,1,3,3,3,2 draw 20 fg 1 move 20 @ @+15 wait fg 1 draw 20 fg 1 move 20 @ @+15 ¥n
スクリプトの赤い色の部分に注目してください。赤い色の部分は move命令の移動先座標を指定する箇所になっていますが、ここに @(アットマーク)や、 @を混ぜた数式が書かれていますね。
この @ は、画像が表示されている「現在の座標」を意味しています。上のスクリプトではX座標の指定に "@" と、Y座標の指定に "@+15" と書かれています。これはつまり、X座標に「現在のX座標」を、Y座標に「現在のY座標に、15を足した値」を指定していることを表します。
この場合、移動前のY座標が 100 だったとすると、その座標に 15 を足した値、つまり 115 をY座標に指定したことになるということが想像できるかと思います。このケースでは移動前の座標がすぐにわかりますが、元の座標を意識せずにキャラクターを動かしたい場合や、(マクロなどで汎用的に使うために)元の座標が不明な場合など、こういった指定の仕方が必要不可欠になることがあります。
さらに実際には元の座標を把握していたとしても、スクリプトを組む際には基本的にキャラクターを表示する際のみ絶対座標を指定し、移動命令では極力相対座標を使用するように心がけておくと、後々何かと都合がよいことが多いかと思います。相対座標は積極的に使用するようにしてみましょう。(ただし、絶対座標指定を行う必要のあるケースもあります。どういった場合がそれに当てはまるのかは、経験して自身で発見していきましょう。)
さて、次回は立ちキャラではなく、イベントCGを用いたスクリプト演出に触れてみたいと思います。
CS2のシステムやコンパイラも現段階でバージョンアップがなされていますので、近日中にきりのよい段階で最新バージョンの公開をしたいと思います。それまでしばしお待ちくださいね。