以前の記事で小道具に変身した状態でプレイヤーキャラクターを回転できない問題がありました。
あわせて読みたい


verseのTeleportToでプレイヤーキャラを回転させる
小道具プロセッサーで変身中に特定のボタンを押したら90度回転する機能を作ろうと思ったのですが、変身中に回転させたら変身が解除されてしまうため、没にした機能です…
その後、X(旧Twitter)で「テレポートを使えば小道具に変身したまま回転できるかも」というアドバイスを頂戴しました。
それを受けて、前回の記事で作っていたコードを改変しました。
目次
機能説明
Qボタンを押下するとプレイヤーキャラの位置にテレポーターを移動し、テレポーターの向きにプレイヤーキャラクタの向きを合わせます。
これにより、小道具に変身した状態でもプレイヤーキャラクタの向きを変えることができるようになりました。
※若干90度よりも多く回転しているような気がするので、角度は要調整かもしれませんが、回転はできました。
ただし、小道具に変身した状態で ctrl ボタンを押下して ”位置の固定” になっている場合は、プレイヤーキャラクタは動かずに、カメラアングルだけが動くだけとなりました。
Verseのプログラム
using { /Fortnite.com/Devices }
using { /Verse.org/Simulation }
using { /UnrealEngine.com/Temporary/Diagnostics }
using { /Fortnite.com/Playspaces }
using { /Fortnite.com/Characters }
using { /UnrealEngine.com/Temporary/SpatialMath }
player_position_device := class(creative_device):
# 入力トリガーの仕掛け
@editable
MyInputTriggerDevice:input_trigger_device = input_trigger_device{}
# テレポーター
@editable
TeleporterDeviceIn:teleporter_device = teleporter_device{}
@editable
TeleporterDeviceOut:teleporter_device = teleporter_device{}
# ゲーム開始時
OnBegin<override>()<suspends>:void=
# 入力トリガーの仕掛けのイベントに関数を指定
MyInputTriggerDevice.PressedEvent.Subscribe(OnInputPressed)
# 入力トリガーの仕掛けに全てのプレイヤーを登録
for (Player : GetPlayspace().GetPlayers()):
MyInputTriggerDevice.Register(Player)
# 関数 - ボタン押下時
OnInputPressed(Agent:agent):void=
if (FortChar := Agent.GetFortCharacter[]):
# ボタンを押下したプレイヤーの位置情報を取得
Transform := FortChar.GetTransform()
Rotation := Transform.Rotation
# 回転させるため90度加算
NewRotation := Rotation.ApplyYaw(90.0)
# 初期位置
initalPos := vector3{ X := 0.0, Y := 0.0, Z := 0.0 }
initalRotation := MakeRotationFromYawPitchRollDegrees(0.0, 0.0, 0.0)
# ※キャラの位置にテレポーターを移動し、プレイヤーをテレポーターの向きに合わせる
if (TeleporterDeviceOut.TeleportTo[Transform.Translation, NewRotation]):
if (TeleporterDeviceIn.TeleportTo[Transform.Translation, NewRotation]):
# テレポーターを初期位置に戻しておく
if (TeleporterDeviceIn.TeleportTo[initalPos, initalRotation]):
if (TeleporterDeviceOut.TeleportTo[initalPos, initalRotation]):
UEFNでの設定
入力トリガーの仕掛け
適当なトリガーを設定します。
今回は “クイックバー入れ換え” (建築モードの切り替え。デフォルトではQボタン)に設定しておきます。

テレポーター
テレポーターは入り口と出口の2つを用意し、裂け目のビジュアルや音声はオフにしておきます。
また、テレポーターの設定で “プレイヤーをテレポーターの方向に向かせる” を “はい” に設定しておきます。
テレポーター(入口用)


テレポーター(出口用)


verse と入力トリガーの仕掛け・テレポーターを紐づけ
verse を島にドラッグ&ドロップで設置して、入力トリガーの仕掛けとテレポーターを紐づけておきます。
