ラクレス

フォーラムへの返信

15件の投稿を表示中 - 16 - 30件目 (全110件中)
  • 投稿者
    投稿
  • ラクレス
    参加者

    エクステンション等を使わない私のやりかたとしてですが

    まず アプリケーションのプロパティで
    “フレームをまたいでサウンドを再生” にチェックします
    BGMの管理はグローバルイベントで行います
    効果音と違い重ねて再生する事は無いと思うのでCHは固定します
    BGMのIDを入れる [再生中] [リクエスト] の変数2つを用意します
    BGMID = 0(停止) 1~(各曲) として管理します

    ・各フレームのイベントから [リクエスト] を入力
    ・(グローバルイベント)
     CHが再生中で [リクエスト] が 0 もしくは
     [リクエスト] と [再生中] が異なる場合CH停止
    ・(グローバルイベント)
     CHが停止中で [リクエスト] が 1 以上の場合
     [リクエスト] を再生し 値を [再生中] に上書き

    といった具合です
    [リクエスト] と [再生中] が異なる時に CH音量を下げていき
    CH音量=0 の時にCH停止 などとすれば
    フェードアウトからBGM切替等も再現できます
    この場合は切替時にCH音量を戻すのを忘れずに

    返信先: 22億以上の変数を表示する方法 #16048
    ラクレス
    参加者

    変数が扱える整数の上下限:-2147483648 から 2147483647
    となっています
    桁を分けて管理するなどで対策出来るのではないかと思います

    リンク先はwikiよりMMF2(だいたいCF2.5も同じ?)の制限に関する情報です
    https://wikiwiki.jp/mmf2/%E3%83%86%E3%82%AF%E3%83%8B%E3%83%83%E3%82%AF%E9%9B%86/MMF2%E3%81%AE%E6%A7%98%E3%80%85%E3%81%AA%E4%B8%8A%E9%99%90

    ラクレス
    参加者

    リストの何行目を参照するか変数で管理するのが良いと思います
    変数で参照するリストの行を指定し
    val関数で表示するパラグラフ番号を持ってきます

    表示した後に変数+1で参照先を次の行へ送ります
    参照する行がリストの総行数より大きかった場合リセットします

    Attachments:
    You must be logged in to view attached files.
    ラクレス
    参加者

    カウントが維持されるのは破壊後に再カウントしていないからだと思われます
    Foreachは破壊されたオブジェクトは参照しないので
    破壊された後にもカウントするフラグを立ててやれば良いかと思います

    ただオブジェクトの破壊は 指示したその場で破壊されるのではなく
    そのフレームの一番最後に実行されるという仕様があるので
    破壊 → 破壊後のカウント を同フレーム内で行う事は出来ません
    カウントフラグを立てるタイミングをズラす必要があります
    一番簡単なのは変数でウェイトを入れてやる方法でしょうか

    変数を使いたくない場合は
    カウントするイベントより下に置く事で次のフレームにフラグを回収させます
    ここで注意が必要なのは カウントするイベントより下に置いた場合でも
    条件が即時実行(緑文字)だったりすると破壊前にカウントされる事になります
    これは他の条件を上に加えて緑文字を赤文字にすると防げます

    *対象数が少なかったり負荷が気にならないのであれば
    カウントを常に実行させる事でこれらの対策は不要です

    サンプル(上)にウェイトを使ったやりかた
    サンプル(下)にイベント位置で対策したやり方を加えました
    オブジェクトを右クリックすると破壊されます

    この件に限らずどこで破壊命令しても実際に破壊されるのは一番最後
    という仕様を知っておくと事前に色々な不具合を回避していけると思います

    Attachments:
    You must be logged in to view attached files.
    返信先: 左右入力時の移動速度が異なる #15881
    ラクレス
    参加者

    その解決策の方が小数点の敏捷を細かく再現出来ますね

    イベント6行目に フレームが開始 が無かった時は
    常に座標 (切り捨てられた後の値) を変数に返している状態になっていました
    その切り捨てられて返って来た変数を元に移動を繰り返していたので
    フレーム開始 をつけた事でそれが無くなり左右同じ速度になったのだと思います

    フレームが開始 が無かった時
    右 100→(102.2→102)→(104.2→104)→(106.2→106)→(108.2→108)→(110.2→110)
    左 100→(97.8→97)→(94.8→94)→(91.8→91)→(88.8→88)→(85.8→85)
    フレームが開始 を付けた後
    右 100→(102.2→102)→(104.4→104)→(106.6→106)→(108.8→108)→(111.0→111)
    左 100→(97.8→97)→(95.6→95)→(93.4→93)→(91.2→91)→(89.0→89)

    返信先: 左右入力時の移動速度が異なる #15875
    ラクレス
    参加者

    「X座標に左右入力( “プレイヤー&Lv” ) * 0.1を追加」
    「X座標を(変数名)エックス座標に変更」
    おっしゃられている通りこの部分が問題になっています

    変数には小数を扱えますが座標では扱えず切り捨てられます
    今回の場合 敏捷x0.1 の 2.2 が移動量になりますが
    例えば X座標100 から移動した場合
    右に移動 100 → 102.2 小数点が切り捨てられ 102(実質2移動)
    左に移動 100 → 97.8 小数点が切り捨てられ 97(実質3移動)
    このため左移動の速度が右移動の1.5倍になっている状況です

    17行目を無効にすると 敏捷=1 という扱いになりますが
    右移動 100 → 100.1(100) 左移動 100 → 99.9(99)
    という様に左には1ずつ動いてしまうというわけです

    移動量を整数にしてから座標にあててやるようにすれば解決するかと思います

    • この返信は5年、 4ヶ月前にラクレスが編集しました。
    返信先: 計算結果がおかしい? #15866
    ラクレス
    参加者

    小数点が含まれない除算で整数が返って来るのは仕様です
    150/100 ではなく 150.0/100 などしてやると 1.5 が返って来ます

    私も最初は知らなかったのですが
    小数点の付いた数字以降の計算は小数まで求められるようです
    例えば 100/7/5/3.0 の場合は
    100/7/5 までは整数で求められ /3.0 だけ小数まで求められる
    対して 100/7/5.0/3 の場合は
    100/7 は整数で求められ /5.0 以降は小数まで求められるといった具合です

    ちなみに 10/3 + 10/4 のように途中 + や – で区切られる場合は
    10.0/3 + 10.0/4 と両方に .0 を含めてやる必要があります

    ラクレス
    参加者

    対象のオブジェクトにForeachを回し
    フラグが有効の場合+1 とするのが一般的かと思います

    複数のオブジェクトというのが同名オブジェクトの複製ではなく
    名前の異なるオブジェクトの事でしたら
    それらを同じオブジェクトグループに設定しグループに対してForeachを回します

    サンプルを作成しましたので参考にして頂ければと思います

    Attachments:
    You must be logged in to view attached files.
    ラクレス
    参加者

    ご対応ありがとうございます!
    どちらの問題も解消しているのを確認しました
    修正が早く本当に助かりましたm(_ _)m

    ラクレス
    参加者

    お世話になっております
    実機での余白処理表示において2つ問題点が見つかりました
    バージョンは R291.6 です

    ・余白が元画像と同じ値に達すると余白下に元画像が現れる
    ・バックグラウンドに行くと戻った時に余白処理が解除される

    といったもので 対処は可能なのですが 手間である事より
    やはりPCと動作が違うと他に問題が起きてないか等不安が残ります
    mfaとapkも添付しましたのでご確認頂けたらと思います

    Attachments:
    You must be logged in to view attached files.
    返信先: ランキング実装に向けて(2) #15755
    ラクレス
    参加者

    オンライン処理に関しては知識が乏しくお力になれません
    最後までお付き合い出来ず申し訳ありません! m(_ _)m
    無事ランキング導入に成功します事をお祈りしております

    返信先: ランキング実装に向けて(2) #15750
    ラクレス
    参加者

    そんな感じです ランキングがまっさらな時は
    一番上のスコア=0 の方の条件が満たされ 1 が代入されます
    1 つでもランキングが加わると スコア=0 は満たされなくなり
    存在しない参照先 変数(-1) からは 0 が返ってくる為
    0 より小さいという条件も満たされず
    一番上の順位は 1 から書き換えられる事は無くなります

    返信先: ランキング実装に向けて(2) #15747
    ラクレス
    参加者

    16行目を スコアが0の時 もしくは 1つ前のスコアより小さい時
    の条件を満たす時に 一つ前の 順位+1 にする
    というイベントに書換えれば順位飛び無しのランキングになります

    Attachments:
    You must be logged in to view attached files.
    返信先: ランキング実装に向けて(2) #15744
    ラクレス
    参加者

    前のサンプルではループインデックス+1を拾って頭にくっつけましたが
    今回は同点時に書換えを行う必要があるので
    一度順位を変数に羅列し条件に応じて書換えた後に拾ってくるようにします
    サンプルでは降順ソートボタンのオブジェクト変数を使いました

    *サンプル16行目
    まずはループインデックス+1の値を
    降順ソートボタン の変数(ループインデックス)に入れます
    変数(0)=1 変数(1)=2 変数(2)=3 ….と1から順にランキングが代入されます

    *サンプル18行目
    次にスコア結果を入れてある リストオブジェクトの変数を比較します
    変数(ループインデックス) と 変数(ループインデックス-1) が等しい時
    とすれば 2位=1位だった場合 3位=2位だった場合 … と順に比較されます
    この条件を満たした時 16行目で入力した 降順ソートボタン の
    変数(ループインデックス) を 変数(ループインデックス-1) に変更すれば
    1つ前の順位と同点の場合1つ前と同じ順位に変更 という処理が出来ます

    このままだと 最初は全て0位 次は2位以降全部2位 次は3位以降全部3位
    の様に見栄えが良くないので 比較の時に スコアが1以上の時 を加えてやれば
    記録が埋まってない箇所の書き換えを防ぐ事が出来ます

    Attachments:
    You must be logged in to view attached files.
    返信先: キーボード作成について #15739
    ラクレス
    参加者

    ( ( 新着順位 – 1 ) / 10 ) * 10 + 1 の式ですが
    まずCF2.5の数式で小数点まで割り出すには /10.0 等してやる必要があるため
    ( ( 新着順位 – 1 ) / 10 ) の部分で小数点が切捨てられた答えが出ます
    新着順位が 1~10 の場合は 1
    新着順位が 11~20 の場合は 11
    新着順位が 21~30 の場合は 21
    と割り出される事になります
    後はリストオブジェクトのイベントの 行にスクロール にこの値を入れるだけです

    OR演算子については解説記事があります
    サンプルではどちらでも結果が同じなので特に意味無くフィルタになっていますが
    単純にどちらかの条件を満たす時という使い方では論理和の方が安全そうです
    https://wikiwiki.jp/mmf2/%E3%83%98%E3%83%AB%E3%83%97%E6%97%A5%E6%9C%AC%E8%AA%9E%E8%A8%B3/OR%20operators

15件の投稿を表示中 - 16 - 30件目 (全110件中)