梯子の真ん中の位置で登らす方法はないでしょうか?

こちらのチュートリアルを参考に梯子の上り下りのアクションを作ってみました。

タイルで作った梯子に重なった時にエリア変数が変わり、そのエリア変数の時だけ上を押すと上る仕組みです。

ですがこの方法ではタイルのギリギリ端っこで登るアクションに移行すると梯子からはみ出した状態で登ってしまい見栄えが非常に不自然です。

梯子を上るステートに移行した際、常に梯子のセンターにキャラクターを強制移動させる方法はないでしょうか?アドバイスをいただけますと幸いです。


AGMakerのランチャー「サンプルプロジェクト」より
Ladder Sampleをお試しいただく事はできますか?

タイルサイズが16x16でのサンプルですので
自身のゲームのタイルサイズに合わせてアクション内の数値を変更する事で対応可能かもしれません。

※追記
AGMaker1.3xより、カスタムアクション機能が導入され
面倒なアクションを簡単に出来るような仕組みも準備しております。
上手くいけば≪ハシゴ捕まり≫の専用アクションをこちらでご紹介できればと思います。

「いいね!」 1

私も似たような問題に遭遇しました。私が選んだ方法は、「移動オブジェクト」というアクションを使って物理オブジェクトを合わせることです。

例えば、「はしご」がオブジェクトで、プレイヤーがはしごに触れて上キーを押すと「移動オブジェクト」がトリガーされます。

移動オブジェクトの中で、オフセットのxとyの中心点を何にするかを設定します。これははしごの中心点に基づいて判断します。

そして、移動速度を「0秒で到達」、つまり瞬間移動に設定します。

こうすることで、キャラクターがはしごに触れて上キーを押すと、微妙にはしごの中央に瞬間移動します。これで正確な位置合わせが完了します。

ありがとうございます。自分のプロジェクトのタイルサイズに合わせサンプルの通りやってみましたが、ラダーチェックからX-には分岐しますがX+には決して分岐しませんでした。

念のためサンプルのヴィジュアルスクリプトのステートをコピー&ペーストしてタイルサイズの数値のみ変更しましたがX+には分岐しませんでした。

私のプロジェクトとの相性が悪いのかもしれませんがサンプルのステートは非常に複雑な命令でお恥ずかしながら計算の苦手な私には仕組みを理解することが難しいかもしれません。

ありがとうございます。

オブジェクトの座標へ移動させてしまうとどこから梯子にアクセスしてもその座標に移動してしまいませんか?

Y座標は変更せずX座標だけを変更する方法があるのでしょうか?

いいよ、移動対象のXとYは別々だから、どちらを動かしてもいい

CA_LadderSnapAction.gd (5.2 KB)

ハシゴ吸着プラグインを用意しました
※プロジェクトのバックアップ後にお試しください。
※v1.3.x以降の機能になります。

■導入
CA_LadderSnapAction.gd
をDLし、≪ファイルシステム≫の好きな個所へドロップする

■操作
ステート「ladder check」に実行アクションとして追加します



その際、タイルサイズを自身のプロジェクトに合わせてください(デフォは24x24)

[ladder check]から[ladder_stay]は無条件でOKです。

「いいね!」 1

わざわざ作っていただき本当にありがとうございます。

さっそく使わせていただきましたが結果としてはサンプルのステートを再現した時と同じ挙動でした。やはり私のプロジェクトのなんらかの設定と相性が悪いのかもしれません。

サンプルを再現した時はXkeepの変数が常にマイナスでX+のステートに分岐しなかったのでその辺りに原因がありそうですが、なかなか難しいですね。

他の妥協案含めもう少しいろいろ考えてみようと思います。

「いいね!」 1

お答えいただきありがとうございます。

つまり梯子にアクセスした際に梯子に設定した最も近い移動ポイントに瞬間移動させるということでしょうか?

梯子の上り下りをする位置が固定なら問題ないですが、梯子のどの場所からでも落下途中やジャンプ上昇中等のプレイヤーが任意のタイミングでアクセスする場合難しそうな気がしますがいかがでしょうか?私の認識が間違っていましたら申し訳ありません。

ご指摘の通り、私の方法は固定された位置でのトリガー認識にしか適しておらず、途中で接触点を自由に切り替えることはできません。どうやらこれは良い選択ではないようです。

「いいね!」 1

ありがとうございます。オブジェクトで作ればヴィジュアルスクリプトが使えるのでインタラクトできる位置が限定されるものならいろいろ作れそうですね。