すごろくのパス動作

ホーム フォーラム CF2.5使用法全般 すごろくのパス動作

  • このトピックには7件の返信、2人の参加者があり、最後にMOKUZUにより5年、 3ヶ月前に更新されました。
8件の投稿を表示中 - 1 - 8件目 (全8件中)
  • 投稿者
    投稿
  • #16020
    MOKUZU
    参加者

    お世話になっております。
    連投してしまい申し訳ございません。

    現在「すごろく」を作ってます。
    行き当たりばったりで作ったので
    大変雑ではありますが、とりあえずシステムは
    完成しました。宜しければ添付ファイルを
    ご覧ください。

    基本的にはアクティブオブジェクトの
    「パス動作」を使って作ってます。
    サイコロを振ると出た目に合わせて
    各ノードに移動するシステムです。

    現状は直線的ですが、背景イラストに合わせて
    すごろく特有のうねうねした曲がり道を
    表現したいと考えております

    パス動作機能は強力ですし
    ここまでは全然難しくなかったのですが、
    イラストを多用する予定なので
    パスノード移動先の各種イベントは
    フレーム分けしたいと思ってます。

    ただのアクティブオブジェクトであれば
    XY座標をグローバル変数にしておけば
    フレームを移動しても現在地点に簡単に
    戻すことが出来ますが、パス移動だと
    私が試みた範囲では元の地点に
    戻すことが難しく困ってます。
    (苦し紛れの方法で対処はしてますが)

    言葉で説明しても分かりづらいと思いますので
    詳細は是非、ファイルを見てやってくださいませ。
    質問用に分かりやすく解説仕様にしてあります。

    どうかよろしくご教示お願いいたします。

    Attachments:
    You must be logged in to view attached files.
    #16022
    MYTH
    参加者

    >>MOKUZUさん

    こんにちは。
    パス動作は使い方が難しい部分ですよね。
    どうにかパス動作のまま戻す方法はないかと模索した結果、成功したのでサンプルを添付いたします。
    パス動作は始めたての頃に少し触ったぐらいで使い方はよくわからなかったのですが、今回試してみて判明したのは、パス動作開始後に発動すると便利な二つのパス動作のアクションです。
    「ノードに移動」は指定したノードで移動を停止します。
    「ノードを分岐」は指定したノードからの移動を開始します。
    「分岐」という言い方はわかりづらいですが、つまりはパス動作が分岐するのではなく開始位置が変更できるという意味だと思われます。

    サンプルではフレーム移行時にグローバル変数でプレイヤーのx座標とy座標を記録し、同時に一度座標を記録したことを意味する「移動保存」の変数を1にしています。
    「移動保存」が1の時、すごろくのフレーム開始時に保存した座標から位置を復元します。
    開始時の移動も最初のノードを一つ消していますので高速移動は用いていません。

    また、パス動作だけで移動と停止を扱うのは面倒なので、プレイヤーの動作を「停止」と「パス動作」の二つに分け、移動する時だけパス動作にしています。これはサイコロの目が確定したときに「ノードを分岐」で開始ノードを変更して移動を開始する際に行います。

    スクロールに関しては全ての処理が済んでからの方が正確に動作すると考えて最も下に配置しましたが、今回の場合は特に変化はないかもしれません。

    内容に関しては以上です。説明は拙くなりましたがサンプルで是非ご確認ください。

    • この返信は5年、 3ヶ月前にMYTHが編集しました。
    Attachments:
    You must be logged in to view attached files.
    #16025
    MYTH
    参加者

    補足の説明です。

    ノードの移動先イベントやそのタイマーイベントに関してですが、数字をそれぞれあてはめずに変数の値を用いることで短縮することができます。
    今回の場合は変数の「現在位置」に従ってパスを変更しています。
    しかしCF2.5では文字列と数字は明確に区別されているので、そのままでは使用できません。

    Str$は便利な関数で、数字を文字列に変換することができます。逆に文字列を数字に変換したい場合はValを用います。

    サンプルでは数字を文字列に変換しているので、パス動作の「01」など名前の数字が一桁になっているノードの前についている0は無くしています。

    #16026
    MOKUZU
    参加者

    >>MYTH様

    ご教示ありがとうございました。

    「分岐」は文字通りの枝分かれだと思ったので
    今回は試そうともしませんでした(汗)
    「始点」とかだったら或いは気が付いたかもしれませんが。

    なるほど…この方法なら任意の位置から開始出来るんですね。
    (XY座標も併用とは素晴らしいです)
    これならパス移動の応用が大きく広がるんじゃないでしょうか。
    特にボードゲームはいろいろ作れるかも。

    今回はグローバル変数「現在位置」さえリンクしてれば
    各種イベントはどうとでも組めそうですし、
    私では到底、不可能なレベルで簡素化、洗練して頂いているので
    もう、そっくりこのまま使わせて頂きます(笑)

    数式は苦手なのでStr$なんて一度も使ったこと無かったです。

    CF2.5は絵や動画制作の補助的な感覚で使うことが多く
    自分的にはプログラミングツールとしての認識が薄いのだと思います。
    wikiの数式リファレンスは一通り目を通してるはずなんですが
    使い道もよく分からないまま忘却の川に流されてますね。
    (/ + – * .Random以外はほとんど使ってない…)

    $が付いてるのは文字扱い…でしたっけ?
    数字を文字列にダイレクトに変換できるなら確かに便利そうですが…
    Str$も含めて数式リファレンスをもう一度基本から勉強し直さないと
    やはり使いどころがピンと来ません。

    神経衰弱に引き続き本当にありがとうございました。

    #16027
    MYTH
    参加者

    >>MOKUZUさん

    そのままアプリケーションに使用していただけるということで、大変光栄に思います。

    Str$やVal関数など、名前が難しそうだしよくわからない…と自分も最初は思いましたが使い方は意外と簡単で、使い慣れるとかなり便利になります。
    数式には文字列しか入力できないものと数字しか入力できないものとで決まっているので、私もただ入力できる形にしているという認識で使っています(^O^)
    (条件の「2つの一般値を比較」などは例外的にどちらでも入力できます)

    一からいくつもプログラムを作ることが出来るというのは非常に凄いことだと思います(自分は同じジャンルのものばかり作っているので…)。
    今回の検証で私としても大変参考になりました。こちらこそ有難うございました。

    #16032
    MOKUZU
    参加者

    >>MYTH様

    追加でのご教示ありがとうございます。
    ASD様が作成してくださる大量のサンプルや修正ファイルはもちろんですが
    時々こちらやwikiに投稿される皆様のファイルや数式、
    理解も不完全なまま、横からこっそり有効利用させて頂く事しばしばです。
    (ごめんなさい)

    MYTH様程の方には度し難い非効率さかもしれませんが
    自分の場合、10×10ひとつで済む数式を
    10+10+10+10+10+10+10+10+10+10で計算しないと
    理解が難しくなる…と言った程度の頭の悪さです。
    (なので高速ループなどは遥か彼方の概念なのです)
    関数とか使いこなせれば大幅なスキルアップは確実なので
    努力するべきは当然なのですが(汗)

    頭の悪さの問題ですが、例えば今、配列オブジェクトを
    学びたくて弄り回しているのですけど
    最初の段階で既に行き詰ったりしてるわけですよ。
    (初めて使うオブジェクトとは言え)
    (思っていたことがまったく出来ない)
    (いくらなんでもこれだけ弄ってまったく動作しないのはおかしい)
    (これはもう何か根本的な勘違いをしてるに違いない…)

    そういう場合、思い切ってこちらで質問してしまっても
    宜しいものでしょうか?
    あまりにも初歩的過ぎる質問は
    迷惑認定されるんじゃないかと毎回ビクビクしてるのですが(汗)

    #16033
    MYTH
    参加者

    >>MOKUZUさん

    私もフォーラムにおいて何度も初歩的な質問でお世話になっていますので、自分で試してみて難しいようであれば遠慮なく質問されてもよろしいかと思います。
    (ASDさんはスゴイ、本当にスゴイ)

    CF2.5のユーザー向けにDiscordチャンネルもあり、そちらでは初歩的な質問でも自由に聞けますので、そちらを利用されるのも手だと思いますよ(^^)/
    CF2.5に関しては情報が少ない(ヘルプだけだと解らないことが沢山ある)ので、貴重な情報源になること請け合いです。
    (結構高度な質問が飛び交ってますが…)

    Discordチャンネル

    配列は便利なオブジェクトで、試してみると手放せなくなります(私も最近使い始めました)。
    二次元や三次元の箱を構築して、そこに値を記録できるという認識です。
    文字列か数字で選択できるのも強みですよね。
    編集する場所は指定することもできるほか、インデックスで隣の箱へ順番に移動することもできます。
    また、最初に指定した配列の範囲外に値を書き込むと、配列が拡張できたりします。
    配列の内容をファイルで入出力ができるのも大きいです。

    高速ループは少し慣れが必要ですが、つまりは「他のイベントより多い回数実行してくれる!」ということだと考えています。
    foreachループもややこしく、私自身よくわかっていません(´;ω;`)
    wikiではこちらのページで何とか少し理解出来ましたので、よろしければ確認なさってください。

    高速ループ、ForEachループについて

    私もCF2.5を使い始めてまだ2年弱程の半端者ですが、解る範囲であればフォーラムやDiscordチャンネルなどで微力ながらお手伝い致します。
    (イベントの理解を試みると、どのような分野の内容でも勉強になるので有難い…)

    #16034
    MOKUZU
    参加者

    >>MYTH様

    ありがとうございます。

    高速ループに関しましては一応
    ASD様、Mr.Grotesque様の詳細な解説を熟読したので
    最低限の理屈は理解してるつもりです。

    ただ、肝心の使い所がまったく思いつかないんです

    普段からイラストや動画頼みの大味なミニゲームばかり作っているので
    コンマ数秒を争ったり1ドットレベルの当たり判定が必要な
    精緻なゲームを作らないせいでしょうか。

    結局、使わないと覚えない…身につかないと忘れてしまう。
    実際、適当に作り過ぎてますね。
    あまりに便利なのでタイマーとか使いまくってますし、
    ASD様ご推奨のフレームベースでやろうとすると時間がかかり過ぎてしまいます。

    いい加減なんとかしないと成長がないです。
    高速ループ必須のゲームを作るのが一番良いのでしょうけど
    思いつかないのです。

    配列に関しては質問させていただきました。
    今回ばかりは赤っ恥覚悟の特攻質問ですが、
    背中を押して頂き感謝いたします。

    Discord???ちょっと自分のレベルが低すぎて
    分不相応だと思いますが(汗)

8件の投稿を表示中 - 1 - 8件目 (全8件中)
  • このトピックに返信するにはログインが必要です。