つぎの①~③で学習します。
NPCを自由に扱うためには、ゲーム内のプレイヤー情報も自由に扱えるようになっておいたほうが良いです。
確認していきましょう。
①はじめに
ゲームの中でプレイヤーやNPCがどこにいるかという情報をどのように認識するでしょうか。
この認識がなければ、NPCを自由に扱うことができません。
A地点からB地点まで移動してほしいとNPCに指令をだすにはどのように処理をしたら良いでしょうか。
また、プレイヤーがいるところまで来てほしいとNPCに指示をだすにはどのように処理をしたら良いでしょうか。
確認していきましょう。
ここからは、verseをつかいます。
verseの扱いに慣れていない方は、verse入門を確認されることをオススメします。
②プレイヤーの情報を取得する
まずは私たちプレイヤーの情報を取得する方法を学びます。
verseファイルをひらき、下のスクリプトをコピー&ペーストしてください。
#メモはverseコードに影響をあたえません。各行の意味をメモとして記載していますので、なんとなく読んでみてください。
#using部分。verseで使う道具箱が書かれている。いつもより処理が複雑のため、使う道具箱の数が多め
using { /Fortnite.com/Devices }
using { /Fortnite.com/Characters }
using { /Fortnite.com/Playspaces }
using { /Verse.org/Simulation }
using { /Verse.org/Verse }
#verseデバイス名。今回は、「プレイヤーの情報を取得して、そのプレイヤーにダメージを与える」ようなデバイスをつくる。
Player_Info_device := class(creative_device):
#ここから、「プレイヤーの情報を取得して、そのプレイヤーにダメージを与える」機能を書いていく。
OnBegin<override>()<suspends>:void=
#プレイヤーがいるゲームの中で、プレイヤーの振る舞いをデータとしてPlayspeceへ溜めておく。
Playspace: fort_playspace = GetPlayspace()
#そのPlayspeceのなかにいるプレイヤー全員分の情報をAllPlayerへ溜めておく。"配列"を使う。
AllPlayers: []player = Playspace.GetPlayers()
#プレイヤーがはじめてゲームにはいってきたとき、そのプレイヤーの情報をFirstPlayerへ溜めておく。
if (FirstPlayer : player = AllPlayers[0]):
#そのFirstPlayerにプレイヤーがいたらFortniteCharacterとして処理を進めていきます。
if (FortniteCharacter : fort_character = FirstPlayer.GetFortCharacter[]):
#そのFortniteCharacterへダメージを与えます。50のダメージです。
FortniteCharacter.Damage(50.0)
そのまま、ビルドしてセッションを開始するとプレイヤーの体力が50減ったことがわかります。
これは私たちがプレイヤーとしてゲームにアクセスした情報を取得したことによって、ダメージをあたえています。今回の考え方をベースにして、取得したプレイヤー情報をもとにNPCにプレイヤーのところまで移動してもらうという指示をあたえることもできます。
③まとめ
NPCを自由に動かすためには、ゲーム内でのプレイヤーやNPCの情報を取得する必要があります。
今回はプレイヤーの情報を取得し、効果をあたえてみました。
プレイヤーの情報を取得するという考え方がプログラミング的な思考になってきて難しく感じると思います。少し意味不明であっても、これからいろいろ経験していけば慣れてしまいます!
NPCの情報の取得方法などは改めてご説明します。
お疲れさまでした。
ご質問やご感想はお気軽にコメント欄まで!