見出し画像

PathfindingServiceでキャラクターがガタガタ歩くのを直す!【RobloxStudio】

こんにちはけつべつです!
みなさんはPathfindingServiceを知ってますか?

このサービスを使うと、決められた場所までNPCなどを移動させることができます。
障害物を避けて決められた場所まで移動することができるので、行って欲しい場所をゴールに設定すれば難しい迷路も簡単に解くことができちゃいます。すごい!

でも、その機能を使ってゲームを作ったところ、NPCの歩き方がおかしくなってしまいました。
ゲームに入った直後は特に問題なくスクリプトが動いていましたが、ゲームの滞在時間が長くなっていくと一歩進むごとに止まってしまうような動き方をするようになりました。
もっと滑らかに歩いて欲しいのに……。

直せないか調べたところ、解決する方法を発見したのでここで共有します!

参考にしたページ: 




使うモデル

まず、上のモデルをゲームの中に挿入してください。PathfondingServiceのスクリプトが付いています。
そして、モデルの中からGoalを取り出して、それをWorkspaceの中に入れてください。
Goalを行って欲しい場所に置けば準備オッケーです。



スクリプトに書き足す

モデルの中にある「Path find」のスクリプトを開いてください。

local waypoints = path:GetWaypoints()

と書いてある行の下あたりに……

local model = script.Parent
model.PrimaryPart = script.Parent.HumanoidRootPart
model.PrimaryPart:SetNetworkOwner(nil)

この3行を追加してください。
こうすることで解決できたはずです!
ゲームを実行してから滞在時間が長くなっても、NPCがGoalに向かって滑らかに歩くはずです。



詳しい解説など

NetworkOwnerは、固定されてないパーツの動きを制御する所有権?のことです。

自分じゃ説明し切れないので、何が起こっているのか詳しく知りたい人はこの二つのページをみてください(英語): 


場合によってはNPCの体の全てのパーツにもNetworkOwnerを設定した方が良いらしいです。

全身のパーツに設定する方法が載っているページ: 

とにかく、ボールや車などのパーツを滑らかに動かしたい時は、NetworkOwnerをClient側に設定すると良いらしいです!!


ある日本人が製作したゲームの中でもNPCの動きがガタガタしていたのでこの記事を書きました。
この記事、あの人に届け!

〜おしまい〜

(9月16日 内容が雑だったため一部分を修正しました。ごめんなさい!)