ホーム › フォーラム › CF2.5使用法全般 › RPG風テキスト表示
-
投稿者投稿
-
2019-05-02 11:29 pm #32970nekocat参加者
こんばんわ。
当方シャドウゲイトのようなRPGを作っておりまして、オブジェクトをクリックしたときのテキストが思い通りに表示されずに行き詰まっています。
wikiなどを参考にしながら、RPGのようなテキスト表示プログラムを導入したのですが、
やりたいことは
1.それぞれ別のオブジェクトをクリックしたとき、それぞれのテキストが表示されるようにしたい。
(テキスト送りは画面クリックかスペースキーを押すことで行える)
2.テキストの最後の行が流れたら、テキストを送るボタンを押すことでそのテキストが終了するようにしたい(今の状態だと最後の行のテキストが繰り返し流れてしまう)
3.できる限りプログラムを単純化したい(まだCF2.5を使いこなせてないので、テキスト表示用プログラムをコピペでそれぞれ作っている状況です。理想としては、テキスト表示用プログラムの一部分に変数のような外部から変更できる要素を加えて、それぞれのテキストを表示できるようにしたい)
参考に、今自分ができる限りつくしたテスト用を添付します。
プログラミングに詳しくないため、言葉足らずで稚拙な文章で申し訳ないのですが、どなたかご助力よろしくお願いします。2019-05-02 11:34 pm #329712019-05-03 5:15 am #32974MYTH参加者>>sally1021さん
こんにちは。
サンプルを作成しました。重複防止として用いられているグローバル変数は、全てのオブジェクトに存在する「固定値」を記録するのが最も良い手段だと考えます。これにより選択中のオブジェクトを確実に特定できます。
グローバル変数=固定値である間は、オブジェクトの特定を行わせないように条件で制限し、全てのパラグラフの表示が完了した時点でグローバル変数をリセットします。できるだけシンプルを目安に作りましたが、今回は条件行のシンプルさというよりは使用する変数を減らす方を重視しました。
「文字数」を記録する変数も削減したかったので、メッセージの表示は「元の文章の、『現在のメッセージの文字数+1』の位置にある文字を現在のメッセージに追加する」という少し複雑な処理になっていますが(説明が下手すぎますね…)、大まかに言えば現在のメッセージに一文字ずつ追加しているだけという形になっています。また、フラグ「スキップ防止」はパラグラフの全文表示時にそのまま次のパラグラフに移行してしまうのを防ぐため、全文表示時に一時的に有効にした後、イベント行の最後に無効にしています。
このフラグが有効の間、次のパラグラフには移行できないように条件で制限しています。制御用オブジェクトの変数「A 表示速度」では自由にテキストの表示速度を変更できます。
今回は3に設定されていますが、この値を大きくする程に表示を遅くできます。Attachments:
You must be logged in to view attached files.2019-05-03 5:29 pm #32976MYTH参加者プログラムの統一化を忘れていました!
全てのテキスト表示プログラムを一つにまとめました。複数のオブジェクトを一つのオブジェクトとして扱う事ができる「オブジェクトグループ」を利用することで、統一が可能となります。
選択対象のオブジェクトを「一般 1」、各テキストを「テキスト」のグループにまとめ、イベントを一本化しています。フレーム開始時に各テキストの固定値をオブジェクトの変数「ペアリング」に記録しています。
各条件内では、オブジェクトとペアリングしたテキストを特定するために「テキストの固定値=ペアリング」を追加しました。
追加でオブジェクトを用意される場合には、同様にオブジェクトとテキストをオブジェクトグループに追加したのち、最初のイベントでペアリングの部分だけ組んで頂ければ後はテキスト表示のイベントが適用されるようになっています。Attachments:
You must be logged in to view attached files.2019-05-03 10:05 pm #32979nekocat参加者サンプルプログラムから丁寧な説明までありがとうございます。
自分のやりたいことができるようになってて感動しました!
恥ずかしながらオブジェクトグループといった機能も初めて知りました…
くださったプログラム実際に触り、無事使いこなせそうですがまだ何が起こっているのかわかりきれていないところもあります。これからもっとCF2.5でゲーム作りの経験を積んで少しづつ理解してきたいと思います。改めて、本当にありがとうございました。
-
投稿者投稿
- このトピックに返信するにはログインが必要です。