①はじめに
以前にnavigatableインターフェイスをつかってNPCを移動させるお話をしました。
あわせて読みたい


インターフェイスをつかいNPCを目標地点まで移動させてみよう
①はじめに verseをつかい、新しい仕掛けをつくることができます。 https://creanavi.k-idea.jp/2024/01/25/verse%e3%81%a7%e6%96%b0%e3%81%97%e3%81%84%e4%bb%95%e6%8e%...
今回はインターフェイスの中でも、Focusインターフェイスをつかい NPCの視点をプレイヤーに向けてみようと思います。
②verseテンプレートNPC Behavior Basicをひらきます。
せっかくなのでNPCを動かしながら視点の変化をつくりたいと思います。
NPCの動きですが、こちらでご紹介しているスクリプトをコピー&ペーストしてください。スクリプトを適用したNPCキャラクター定義をビューポートにドラッグ&ドロップしておきます。そうすると、NPCスポナーとして存在してくれます。
あわせて読みたい


ループをつかいぐるぐる同じ行動をさせてみよう
①はじめに インターフェイスをつかいNPCを目標地点まで移動させることができることを前提としてお話をします。まだ確認できていない方はこちらから確認してみてください...
③verseテンプレートverse deviceをひらきます。
device nameはFocus_Deviceとします。
以下のスクリプトをコピー&ペーストしてください。#メモ部分に補足事項を掲載しています。ご確認ください。
using { /Fortnite.com/AI }
using { /Fortnite.com/Characters }
using { /Fortnite.com/Devices }
using { /Verse.org/Simulation }
using { /UnrealEngine.com/Temporary/Diagnostics }
FocusDevice := class(creative_device):
#事前に用意していたNPCスポナーをわりあてます。
#NPCスポナーのクラス名はnpc_spawner_deviceです。
@editable
MyNPCSpawnerDevice:npc_spawner_device = npc_spawner_device{}
OnBegin<override>()<suspends>:void=
#npc_spawner_deviceのイベント機能をつかいます。
#具体的には、NPCがスポーンされたときにイベント発生するというもの
MyNPCSpawnerDevice.SpawnedEvent.Subscribe(OnCharacterSpawned)
#そのイベントとは何かと記載していきます。
OnCharacterSpawned(SpawnedAgent:agent):void=
if:
#スポーンしたNPCの情報を取得します。
FortCharacter := SpawnedAgent.GetFortCharacter[]
#そのNPCの視点を目標にむけさせる機能を実装させます。これが、Focusインターフェイスです。
FocusInterface := FortCharacter.GetFocusInterface[]
#ゲームに初めておとずれたプレイヤーの情報を取得します。
PlayerToFocus := GetPlayspace().GetPlayers()[0]
then:
#はじめてゲームに訪れたプレイヤーの方にNPCの視点を向けさせます。
spawn{FocusInterface.MaintainFocus(PlayerToFocus)}
verseコードをビルドして、verseデバイスをビューポートに設置します。設置したデバイスの詳細設定にて、さきほど設置したNPCキャラクター定義(NPCスポナー)をわりあてます。(下画像の黄色枠部分を参照)

セッションを開始してみましょう。(この時にセッションがうまくはじまらないとしても、改めてセッションを開始するとうまく開始されます。)
NPCが動きながらプレイヤーの方を見れくれます。大成功です。

ちなみに画像のようにNPCを複数用意したいときは、NPCスポナーの詳細設定にてスポーン回数の数値をアップしてあげれば良いです。
④まとめ
いかがでしたでしょうか。
NPCにこっちを見ながら運動させる方法を学習しました。
これはボス戦などに活用できそうですね。
いろいろと応用的なお話もしていけたらと思います。
では。お疲れさまでした。