左右入力時の移動速度が異なる

ホーム フォーラム CF2.5使用法全般 左右入力時の移動速度が異なる

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

    お世話になります。

    右に入力時には遅く、左入力時には速くなります。
    変数を―1にすると左に移動、1にすると右に移動と作っているのですが、何をするにしても左入力が優先されるようで、その原因がわかりません。

    「b0_02_テローダス_本体」のオブジェクトイベントの17段目が入力を受け付けるかどうかになっているのですが。ここを無効にしても左入力だけは受け付けてしまうという状況です。
    後は21段目の「X座標に左右入力( “プレイヤー&Lv” ) * 0.1を追加」、「X座標を(変数名)エックス座標に変更」の所くらいしか関係していないと思うのですが原因が全く分かりません。

    (変数名)エックス座標をカウンターで表示してみた所、左入力時は凄い勢いで変数が引かれていくもののの、右入力時は変数の増加が遅く感じます。

    このキャラクターの動かし方はMMF2オリジナルガイドブックを元に作ったのですが、以前のサンプルをあげたときのデータで確認してみた所このような事はありませんでした。

    この時作ったオブジェクトと今の左入力時のみ移動速度が上昇するオブジェクトを同じフレームに配置し比較してみた所やはり今回のオブジェクトのみがおかしいようで、以前作ったオブジェクトには左右入力の違いでスピードに差は出ませんでした。
    お互いのイベントを見比べても正直違いが分からず完全にお手上げ状態です。

    今回のサンプルです。
    「プレイヤー&Lv」オブジェクトの変数名「現在のキャラ番号」を6にすると今回の問題のオブジェクトを操作、1にすると以前のオブジェクトを操作に切り替わります。

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

    すみません、初期状態が現在のキャラ番号1になっているので問題が無いほうのオブジェクトが操作できる状態になっています。

    #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ヶ月前にラクレスが編集しました。
    #15877
    daifuku
    参加者

    >>ラクレスさん
    先ほどの問題に続きましてありがとうございます!
    確かに整数にした所、正常に動作しました。また小数点に悩ませられていたようです。
    問題解決です。

    ただ自分なりに先ほど検証してみた所また違った解決法?がでてきました。
    イベント6行目の「エックス座標をX( “プレイヤー&Lv” ) に変更」、「ワイ座標をY( “プレイヤー&Lv” ) に変更」の条件に「フレームが開始」の条件を付けたした所なぜか左右同速で動くようになりました。以前操作していたオブジェクトの違いもこの部分で、フレームが開始の条件を取っ払ってしまうと同じように左右で差が出るようになりました。

    問題は解決したものの、自分なりに検証した結果謎が増えてしまいました。

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

    たぶん私はガイドブックのこの部分をみて小数点を使ったのだと思います。
    このページにも座標移動では小数点以下が切り捨てられると書いてありましたね…。
    それでも小数点を使った作り方が載っていたので迷いなくマネしたのだと思います。

    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)

    #15882
    daifuku
    参加者

    >>ラクレスさん
    切り捨てられた数値を反映していた物がフレームを開始の条件を付けた事で無くなったのですね。
    フレームが開始有りの時と無しの時でここまで差が生まれるとは思いませんでした。
    イベント連続時にアクションを1回のみ実行でも同様?の効果が出たようです。
    この問題が解決して凄く助かりました、ありがとうございます。

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