ボタンを押したら別ワールドへワープするギミックの作り方。
なっとうまきです。相変わらずワールド制作部を勝手にやってます。
楽しいですよね、ワールド制作。
はじめに
ワールド作ってる時に、ふと
ワープポータルってこう、SFチックじゃないですか。
そういうSFチックなワールドなら良いんですが、そうじゃないワールドだとなんか違和感ですし
かと言って、透明にしてゲートを配置することも出来ますが、誤って突っ込んで、意図しない移動が発生してしまうのもよく有りません。(地味にワールド間移動は重たいので。)
ではどうするか・・・
簡単です「このワールドに行くためにボタンを押す」というUI上の導線を作ってあげればよいのです。いいですねー!やりましょう!
実装をしていきます
と、言いつつですね・・・ボタンを押してワールド間ワープというのはClusterでは2つギミックを使う必要があります。
どのギミックを使うのか、どうして2個ギミックを使い分ける必要があるのかについて説明します。
どのギミックを使うのか
World Gate:アイテムに当たるとワールド間でワープします。
Warp Player Gimmick:アイテムを使うとワールド内ワープが出来るギミック
それぞれ以下の記事で解説しているので一読してみてください
1. 複数のシーンをつくる時に便利!プレイヤーをワールド内でワープさせるギミックをつくる - Cluster Creators Guide:Warp Player Gimmickの説明
2. ワールドを移動する - note:World Gateの説明
これらのギミックを使って実装していきます。
どうして2個使うのか
まず、ワールド間移動ができればいいので、World GateをInteract Item Triggerで起動できればよいのですが
残念なことに、WorldGateはそういういい感じの機能は持ちません。
WorldGateに入ってきた(当たり判定に当たった)人をとにかく
「よくわからんが、この人をXXさんのワールドにワープ!ヨシッ!」
というように横流ししていくヤツです。
これでは「誤ってゲートに入った人」がかわいそうです。
そのため、ボタンを押したら~の制御をするためにWarpPlayerGimmickも併用します。
WarpPlayerGimmickの方は、ボタンを押したらWarpPlayerGimmickを発動した人は転送するというロジックを組み込めます。
さて、ここまでは文字で説明しましたが、ちょっと絵も使います。
登場人物は3人(?)です。
1. ワールドにいる人
2. ワールド内ワープギミック(WarpPlayerGimmick)
3. ワールド間ワープポータル(WorldGate)
こんな感じのストーリーになります。
ワールドにいる人がボタンを押します。そうすると、WarpPlayerGimmickが発動してWorldGateが置いてある空間にワープします。
転送された次の瞬間、WorldGateの当たり判定が効いて、ワールド間ワープが実行されます。
ね?簡単でしょ?
WorldGateの設定
設定をする前に、旅館のワールドを紹介します。
今作っているワープギミックは、このワールドに実装されているものです。
露天風呂付き客室 - Cluster
さて、このワールドの裏側の話になりますが、実はエレベーターが3つあります。
こんな感じです。
で、これら3個が何にどう使われるかというと、扉の開いている左側のエレベータは利用者が実際に外部から乗り込めるエレベータです。
右側2つは、WorldGateになっています。
押したボタン(ワープ先)に応じてプレイヤーが右側の上下どちらかのエレベータに転送されて、対応するワールドへワープする。と言った流れになっています。
WorldGateのコライダーは右側の枠のような大きさで目一杯広げて
転送されてきたプレイヤーが必ずコライダーに当たるようにしています。
整理するとこんな感じです。
一旦このあたりで WorldGateの説明は切り上げます(また、少しだけ出てきます)
WarpPlayerGimmickを設定してみる
とりあえず、このあたりを参考に、WarpPlayerGimmickを組みます。
1. 複数のシーンをつくる時に便利!プレイヤーをワールド内でワープさせるギミックをつくる - Cluster Creators Guide:Warp Player Gimmickの説明
ここで重要なのは、InteractItemTriggerはOwnerに対してシグナルを飛ばします。
そして、受け取り側のWarpPlayerGimmickはPlayerからシグナルを受け取るように設定します。
そして、転送先を表すTargetTransformですがこれはまだ設定されていません。
TargetTransformに設定するためのオブジェクトは空のオブジェクトでよいです。WorldGate(エレベータの中心)の中心部分に、配置しておきましょう。
これで一通りの設定は終わりです。
やらかし的な豆知識
もし、InteractItemTriggerの設定時に、Itemに対してシグナルを飛ばしてしまった場合、
誰かがエレベータのボタンを押した時にワールドにいる全員がWorldGateのある空間へワープするということが起きます。
気をつけてくださいねw(やらかしたので)
今日は以上ですかね。
一旦ネタ切れでございます。
またネタが出来たらお会いしましょう。
この記事が気に入ったらサポートをしてみませんか?