見出し画像

Luaがわからなくても大丈夫!Robloxで簡単な敵性NPCを作ろう!

※こちらは2024/05/26に開催されたLTイベント(https://moze.connpass.com/event/318087/)の内容に補足説明を加えたものです。

公式アセットのゾンビモデル(https://create.roblox.com/docs/ja-jp/resources/npc-kit)を利用して、プレイヤーを追いかけたり攻撃したりするNPCを簡単に作る方法をお伝えしようと思います。

1,ゾンビモデルと、リグモデルの準備


最初にゾンビモデルと、新規NPC用のリグモデルを呼び出します。
ツールボックスを開き、「Zombie」で検索し、バツ印の右横のアイコンをクリックして検索オプション画面を開きクリエイターを「Roblox」に絞ります。

このマークのアイコンをクリックすると、検索オプション画面が表示されます。
クリエイターをRobloxで絞ります
「Drooling Zombie」というゾンビモデルを使用します。(同名のものがありますが怖い方です)

次にアバタータブからリグビルダーをクリックして呼び出し、リグモデルを作成します。

画像では、ブロックタイプを呼び出していますが、どれを使用してもかまいません。

2,ゾンビ要素の移植

次にゾンビ要素を、呼び出したリグに複製します。
ゾンビモデルの子要素である「Animations」「Animate」「Health」「NPC」「RnxNpcSounds」「Configuration」を複製し、
リグモデルにペーストします。

Animationスクリプトが、元々あったLocalScript(青いPCマーク付き)のAnimationスクリプトと、ゾンビのServerScriptのAnimationスクリプトと2つになってしまいますが、
消さずに残してください。

さらに、HumanoidRootPartの下にある「AlignOrientation」も忘れずにコピー&ペーストします。



3,「ZombieFriend」タグの設定

次にタグの設定です。
このままでは同じゾンビ仲間や自分自身も襲ってしまうので、
リグモデルのプロパティに「ZombieFriend」というタグを設定します。
NPCスクリプトの設定でZombieFriend同士は襲わないようになっています。

候補が出てこなければ手動で入力して下さい。

タグについては詳しくはを参照ください。

これで基本のNPCができました。
しかし個性がないので、アレンジする方法もお伝えします。

4,アレンジ方法1、モデルの変更


一番手軽なのは、自分のアバターを実際に着替えさせて、リグビルダーでマイアバターを呼び出す方法です。

マイアバターボタンで呼び出した、お気に入りの氷の妖精姿です。

任意のプレイヤーのリグを呼び出したい場合は「Load Character Pro」プラグインを使ってプレイヤーのリグを呼び出すことができます。

使用名、表示名のどちらでも検索可能です

また、特定のキャラクターバンドルを「Character Creator」プラグインを使用して、呼び出すこともできます。
Robloxホーム画面のマーケットプレイスで、「キャラクター」で検索して表示されるのがキャラクターバンドルです。

bundles/の次の数字がバンドルのアセットIDです。
Load Bundle DescriptionにクリエイターストアのバンドルIDをセットします。

好きなキャラクターをゾンビにしてみましょう。

5,アレンジ方法2、動きのカスタマイズ

ゾンビモデルから移植した「Configuration」でダメージや攻撃範囲、「NPC」スクリプトで移動スピードなどを設定します。これにより、NPCの動きや攻撃特性を細かく調整することが可能です。

AttackDamageを0にすると、かまれても痛くない。Radiusは範囲です。
HumanoidにwalkSpeedを設定しても、こちらで上書きされます。こちらで設定を。

6,アレンジ方法3、アニメーションの変更

最後にアニメーションの変更です。
「Animations」フォルダの「AttackAnimation」や「DeathAnimation」、「Animate」スクリプトの「run」や「idle」を変更することで、NPCの動きをカスタマイズします。

アニメーションの用意ですが、アニメーションエディタで作成したり、Blenderで作成したfbx形式のアニメーションをインポートし、使うことができます。(詳しくは、https://create.roblox.com/docs/ja-jp/animation/usingをご覧ください)グループ作成している場合、アニメーションの所有者とエクスピリエンスの所有者が異なるとエラーとなるのでお気を付けください。

また、マーケットプレイスのアニメーションを適用することもできます。
マーケットプレースのアニメーションを使用するときは、URLのIDとアニメーションIDが違い、そのままでは使用できないので、お気を付けください。
「Load Catalog Item」プラグインなどを利用して、アニメーションファイルを呼び出し、そちらを使用しましょう。

マーケットプレイスでアニメ/バンドルを選択、バンドルの中でニンジャをクリック
左下のニンジャランをクリック
catalog/の次の数字アセットIDです。
ニンジャランのurlのidを指定する

また、ゾンビ要素の移植のところで、元々あったLocalScriptのAnimationスクリプトを取っておくように伝えましたが、LocalScriptの「run」や「idle」をコピーし、ServerScriptの「run」や「idle」に設定することで、プレーヤーを呼び出していた場合、そのプレイヤーがカスタマイズしている「いつもの」動きに設定することができます。(忍者風の動きをセットしていれば忍者風に、モデル風をセットしていればモデル風に)
ちなみにLocalScriptはプレイヤーの動作で使用されるもので、NPCの動作では無効となっているので、元々のAnimationスクリプトがそのままでも問題ありません。

7,ゾンビ要素以外の基本のNPC設定について

※この章はトークイベントで説明が漏れてしまった部分の追記です。

リグの要素のHumanoidオブジェクトの設定により、NPCの名前や体力の表示についてカスタマイズすることができます。(https://create.roblox.com/docs/ja-jp/characters/name-health-display

また、NPCに会話させたいときは、TextChatService:DisplayBubbleを使用することができます。
(https://create.roblox.com/docs/ja-jp/chat/bubble-chat#npc-bubbles)


これでNPCは完成です!
あとは、ツールボックスから武器を選んでプレイヤーに持たせたり、
テンプレートから背景を選ぶことで、それだけで簡単なゲームになります。
地形ツールもありますが、扱いがちょっと難しいのでテンプレートを使うのが楽です。

背景はCastleテンプレート、NPCの会話にはTextChatServiceを使用しています。


この記事が気に入ったらサポートをしてみませんか?