①はじめに
以前にnavigatableインターフェイスをつかってNPCを移動させるお話をしました。
今回はインターフェイスの中でも、Focusインターフェイスをつかい NPCの視点をプレイヤーに向けてみようと思います。
②verseテンプレートNPC Behavior Basicをひらきます。
せっかくなので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にこっちを見ながら運動させる方法を学習しました。
これはボス戦などに活用できそうですね。
いろいろと応用的なお話もしていけたらと思います。
では。お疲れさまでした。
ご質問やご感想はお気軽にコメント欄まで!