連ねたオブジェクトの列間隔を一定に保つ方法

ホーム フォーラム Android,iOS 連ねたオブジェクトの列間隔を一定に保つ方法

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

    いつもお世話になっております。
    オブジェクトを2つ以上連ねたときのオブジェクトの列間隔を一定にしたいです。
    オブジェクトのサイズを大きくすると当然ですが後ろに繋がったオブジェクトと重なってしまいます。サイズに合わせて列をずらせるとよいのですが分かりません。
    またオブジェクトに衝突したら後ろにそのオブジェクトが繋がっていくようしてあるのですが
    オブジェクトの移動座標の取得が上手くいってないようでして座標取得にラグが発生してしまいます。(フレームが開始地点リストに移動座標分書き込まれていないとき)
    こちらも考えましたが分かりませんでした。
    ファイルの方作成しました。
    宜しくお願い致します。

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

    説明が下手でした。
    改めてファイルを作成しました。
    宜しくお願いします。

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

    すみません気になった点があったので修正しました。
    こちらがファイルになります。

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

    投稿して1ヵ月程経ちますが確認して頂けないでしょうか?
    スケールの大きさ変更分座標をずらせば良いと思うのですが
    スケール値とピクセル移動分が合いません
    宜しくお願いします。

    #34052
    ASD
    キーマスター

    遅くなりました。こちらを参考にしてください。

    ・スケールが変更された際のオブジェクトの間隔
    オブジェクトの幅から距離を算出し、衝突した(連結している)オブジェクトの順番に位置の再計算を行います。

    ・連結時のラグ
    リストの行数が連結イベントで取得する行数に満たない場合は、現存している行数から最古のものを使用します。

    – サンプルプログラム
    https://blog.clickteam.jp/wp-content/uploads/2020/08/cf25_blog_2020-08-04_幅間隔を一定にする.zip

    #34070
    dai
    参加者

    サンプルいつもありがとうございます。
    確認しまして2つ気になった点があります。
    8行目のグループオブジェクトの「ぶつかった順番」変数にリストの行数をセットしていますが
    どの様な理由からでしょうか?
    また11行目の速度係数の1.0/speedの計算式を1とせず1.0と小数点第一位まで記述している理由を教えて下さい。
    宜しくお願いします。

    • この返信は3年、 8ヶ月前にdaiが編集しました。
    • この返信は3年、 8ヶ月前にdaiが編集しました。
    #34073
    ASD
    キーマスター

    >8行目のグループオブジェクトの「ぶつかった順番」変数にリストの行数をセットしていますが
    どの様な理由からでしょうか?

    オブジェクトのスケールが変動するために、常に親から子までの距離の再計算を行っています。
    (変動するタイミングが固定の場合は常に実行せずにスケールが変更された時だけで良い)。
    『親→子』間の距離の修正を行うので、後ろのオブジェクトになる程、それ以前に繋がっているオブジェクトの距離を加味する必要があります。
    なのでぶつかった(繋がっている)オブジェクトの順番に距離(オブジェクトの半径+半径+マージン)を計算して、親の変数へどんどんと蓄積させています。

    「ぶつかった順番」変数にリストの行数をセットしているのはその値を参照すれば何番目のオブジェクトかが判るという確認のためのものでした。実際には必要ありません。

    >11行目の速度係数の1.0/speedの計算式を1とせず1.0と小数点第一位まで記述している理由を教えて下さい。

    CF2.5の計算式の仕様で、計算結果に小数点以下の値が含まれる場合、予め小数点を含んだ値を式へ入れて計算させる必要があります。
    今回は、1F当りの移動量を0.121666pxとしたため、* 0.121666 の部分で小数点以下を含んだ値があるので、1.0は1でも良いのですが、仮にここが整数だった場合、整数だけで計算が行われると、結果に小数点以下が含まれても無視されてしまいます。その予防的措置のために1.0としてあります。

    例:
    1 / ( 10 * 2 ) だと 0 になる。
    1.0 / ( 10 * 2 ) だと 0.05 になる。

    変数には『整数型』と『浮動小数点型』があります。整数同士で計算を行うと変数が整数型のままとなるためこのような方法を取らなければいけません。これについては下記のトピックも参考にして下さい。

    累乗計算で変数を操作した際の挙動につきまして

    #34075
    dai
    参加者

    詳しく説明して下さりありがとうございました。
    またこちらのイベント内容改めて投稿いたします。
    実装したい内容以前のわからない所がありますので
    近い内に投稿します。
    宜しくお願いします。

    • この返信は3年、 8ヶ月前にdaiが編集しました。
    • この返信は3年、 8ヶ月前にdaiが編集しました。
8件の投稿を表示中 - 1 - 8件目 (全8件中)
  • このトピックに返信するにはログインが必要です。