NPCの動きの紹介

これまで私たちは、NPC(Non-Player Character)を一切使わない、リアルなプレイヤーだけのゲームを作ってきました。

Robloxのゲーム内で動作するNPCを作るにはどうしたらいいのでしょうか?

ここでは、Rigの作成方法と、NPCをある場所から別の場所へ、障害物があっても移動させることができるPathfindingServiceとは何かを見ていきます。

準備

1.通常通り、新しいBaseplateテンプレートを開きます。

2.以下のようなRig(NPC本体)を作成します。

3.部品を作成し、名前を「goal」とします。

第一部:ダイレクトムーブメント

ここからは、NPCを単純に移動させる方法について見ていきます。

1.ダミー “の名前を “npcModel “に変更します。 npcModel」の下にスクリプトを作成し、「moveNpc」と命名します。

2.moveNpcの内部で、次のように入力します。

  • 1行目:npcModelからHumanoidを探し、”npc “に代入する。
  • 3行目HumanoidRootPartのアンカーを削除し、NPCが移動できるようにします。
  • 5行目NPCヒューマノイドをゴールの位置に移動させる(作成した緑色の部分)

ここで「実行」をクリックすると、NPCが動き出すはずです。

第二部:障害物を乗り越える

とても素晴らしい うちのNPCがやっと自分で動けるようになりました

しかし、その中間にあるものはどうなるのでしょうか? 壁みたいなもの?

間に壁を作る。

そして、実行をクリックします。

おっと……。

まず、”PathfindingService “を使って経路を計算します。

  • 行目:PathfindingServiceをスクリプトにインクルードする
  • 4行目胴体を取得し、それを使って8行目でパスを計算します。
  • line 5:ゴール部分の取得
  • 9行目PathfindingService を使ってパスを作成する
  • line 10: 最短距離での経路を計算する(この場合、トルソー位置からゴール位置まで)。

そして、パスを可視化するためには、次のようなものが必要です。

  • line 13: 計算した経路から、経路に沿った点を作成します。
  • line 14: game.Workspace の下に新しいフォルダを作成し、すべてのウェイポイントマークを保存します。
  • 16-26行目各ウェイポイントマークを、目に見える小さな黄色い点に可視化します。

そして、今「実行」をクリックすると、ビジュアルパスが表示されます。

ここで、次のように入力すると、計算されたパスに沿って移動します。

  • 30行目現在のループ内の次のウェイポイントに移動する
  • 31行目次のウェイポイントに到達するまで一時停止する

第三部:障害物を越え、隙間を飛び越える

NPCのために、もっと難しいものを作ろう!

現在の環境とファイルを使って、次のように作成します。

今、「実行」をクリックするとどうなりますか?

正しい経路が計算されているのがわかると思いますが、実際にはNPCはゴールにたどり着けません。

ジャンプを知らないので、真ん中で止まってしまいました

そこで、28行目から、次のように変更します。

  • 30行目:コンピュータがNPCをジャンプさせるべきと判断した場合
  • 32行目NPC の状態を Walking から Jumping に変更する。

では、もう一度やってみましょう。