Verseメモ – プレイヤーチェックポイントパッドを使ってみる[UEFN,Verse]

目次

プレイヤーチェックポイントパッドとは

  • プレイヤーのスポーン地点を設定できるもの。
  • プレイヤースポーンパッドに登録したプレイヤーはリスポーン地点がプレイヤーチェックポイントパッドを配置した位置になる。

Verseで設定してみる

  • 公式ドキュメント
@editable
CheckPoint : player_checkpoint_device = player_checkpoint_device{}
  • まずはプレイヤーチェックポイントパッドの仕掛けを配置してVerseで設定する。
CheckPoint.Disable()
CheckPoint.Enable()
CheckPoint.Register(Agent)
CheckPoint.GetTransform()
  • 機能は4つ。
  • Disable:無効化
  • Enable:有効化
  • Resister:登録(Agent情報が必要)
  • GetTransform:位置情報を取得
check_point_device := class(creative_device):

    @editable
    CheckPoint : player_checkpoint_device = player_checkpoint_device{}

    OnBegin<override>()<suspends>:void=
        CheckPoint.Enable()
  • ゲーム開始時に有効にする。ならこれでよし。

トリガーで起動してみる

check_point_device := class(creative_device):

    @editable
    CheckPoint : player_checkpoint_device = player_checkpoint_device{}

    @editable
    Trigger : trigger_device = trigger_device{}

    OnBegin<override>()<suspends>:void=
        Trigger.TriggeredEvent.Subscribe(OnTriggered)

    OnTriggered(Agent : ?agent) : void=
        if(Player := Agent?):
            CheckPoint.Enable()
            CheckPoint.Register(Player)
  • トリガーの仕掛けを配置、設定してトリガーのイベント「TriggeredEvent」を新しく作った「OnTriggered」関数にサブスクライブする。これでプレイヤーがトリガーを触って起動すると「OnTriggered」関数の中身が処理されるようになる。
  • 「OnTriggered」関数にはプレイヤーチェックポイントパッドを有効にして、トリガーイベントを起動したプレイヤーを登録する処理を書いておく。

気になった部分

  • 「?Agent」:頭に?がつくのはOption型。
  • 「TriggeredEvent」はトリガーを起動したAgentがいない場合があるようで、その場合はfalseが返ってくる。
  • そのため、OnTriggered関数では一度Agentをチェックする部分を入れる必要があった。
  • 完全に理解しているわけではないのでわかったことがあったら追記したい。

コメント

コメントする

目次