近年、様々なAIツールが登場しています。私自身もかなり活用しています。様々な場所でAIが活用できますが、まだ一部の人しか使っていないようです。
ChatGPT
今話題のChatGPT(チャットGPT)、OpenAI社が開発したチャットボットです。「ロブロックスと何の関係があるの?」と言いたくなるかもしれませんよね。実はRobloxのゲーム制作においても様々なことに活用できるのです。
- ゲームのアイデアを出してくれる
ゲームを作りたいんだけどアイデアが浮かばない・・・。そんな時にChatGPTを活用してみましょう。 - プログラムを作成してくれる
完璧ではないにしろ十分活用できます。ショートプログラムはもちろん、かなり長いものも出力されます。ただし、出力されたプログラムをどこに配置するのか、正しく動作するのかは検証する必要があります。実際の所、そのプログラムを見て理解できる人でないと難しいかもしれません。まずはそのレベルまでスキルアップする必要があるでしょう。
My GPTs でロブロックス専門の講師「ロブロックス先生」を作成してみました。対象は小学生高学年から中学生になります。こちらは GPTplusに加入していないと使えません。どんな感じの回答をくれるのかはこちらのページをご覧ください。
Robloxアシスタント
ついにRoblox公式のAIアシスタントが公開されました。下記URLより入れますが、Robloxにログインしている必要があります。日本語にも対応していますので、そのまま矢印の「質問する」の欄に聞きたいことを入力すればOKです。
https://create.roblox.com/docs/assistant
使用例
【質問】クリックしたらドアが開くようにするには?
【回答】I couldn’t find Roblox docs, so be sure to double check this answer.
ドアがクリックされたときに開くようにするには、次の手順を試してみることができます:
- パーツを作成してドアを作ります。ドアの形状やデザインは自由です。
- ドアのパーツには、ClickDetector(クリック検出器)を追加します。これにより、ドアがクリックされたときにイベントが発生します。
- スクリプトを作成し、ClickDetectorのMouseClickイベントに関数を関連付けます。関数はドアを開くためのコードを含んでいる必要があります。
- 関数内で、ドアのパーツを回転させるなどして、ドアを開くアニメーションを作成します。
以下は、基本的なスクリプトの例です:
local door = script.Parent -- ドアのパーツを取得
local function openDoor()
-- ドアを開くアニメーションのコードをここに追加
door:RotateTo(Vector3.new(0, 90, 0), 1) -- ドアを90度回転させる例
end
script.Parent.ClickDetector.MouseClick:Connect(openDoor) -- ClickDetectorのMouseClickイベントに関数を関連付ける
このスクリプトは、ドアのパーツにClickDetectorがアタッチされていると仮定しています。ドアがクリックされると、openDoor関数が呼び出され、ドアが開くアニメーションが再生されます。
ただし、このスクリプトは基本的な例であり、実際のゲームや場面に合わせてカスタマイズする必要があります。また、ドアの開閉にはアニメーションやサウンドの追加など、さまざまな要素を考慮する必要があります。
以上が回答です。
RotateTo? 初めて見るPartのメソッドですね。「こんなのがあったんだ」と思い実行してみたところ、案の定このようなメソッドはありませんでした。まれに嘘を教えます(笑)
エラーになったことを伝えプログラムを修正させました。
【質問】RotateToというものはないようですが
【回答】申し訳ありません、間違った情報を提供しました。RotateTo関数は存在しません。代わりに、PartのCFrameプロパティを使用してドアを回転させることができます。
以下は、正しいスクリプトの例です:
local door = script.Parent -- ドアのパーツを取得
local function openDoor()
-- ドアを開くアニメーションのコードをここに追加
door:RotateTo(Vector3.new(0, 90, 0), 1) -- ドアを90度回転させる例
end
script.Parent.ClickDetector.MouseClick:Connect(openDoor) -- ClickDetectorのMouseClickイベントに関数を関連付ける
このスクリプトは、ドアのパーツにClickDetectorがアタッチされていると仮定しています。ドアがクリックされると、openDoor関数が呼び出され、ドアが開くアニメーションが再生されます。
ただし、このスクリプトは基本的な例であり、実際のゲームや場面に合わせてカスタマイズする必要があります。また、ドアの開閉にはアニメーションやサウンドの追加など、さまざまな要素を考慮する必要があります。
ドアは中央から回転しますが、一応正常に動作しました。もちろん、さらに質問を繰り返し、ドアの端を起点としたドアも作成できると思います。
ChatGPT3.5の場合
では、ChatGPT3.5ではどうでしょうか? 同じ質問をしてみました。
【質問】Robloxのゲーム制作についての質問です。 クリックしたらドアが開くようにするには?
【回答】Robloxでドアがクリックで開くようにするには、Roblox Studioを使用してスクリプトを作成する必要があります。以下は、Robloxでクリックしてドアを開くための基本的な手順です。
- Roblox Studioを開き、ゲーム内にドアを配置します。ドアは「Part」または「Model」を使って作成することができます。ドアの外側と内側の2つの部分が必要です。
- ドアの外側に、プレイヤーがクリックできるようにする「ClickDetector」を追加します。これは、プレイヤーがドアをクリックしたときにスクリプトを実行するために使用します。
- ドアの内側に、ドアを開閉するための「Script」を追加します。以下は、ドアを開閉するための簡単なスクリプトの例です。
local door = script.Parent -- ドアの親オブジェクトを取得
local clickDetector = door:FindFirstChild("ClickDetector") -- ClickDetectorを取得
if clickDetector then
clickDetector.MouseClick:Connect(function(player)
-- プレイヤーがクリックしたときに実行されるコード
door.Transparency = 1 -- ドアを透明にする(ドアの外側を見えなくする)
wait(2) -- ドアが開いている時間を設定(2秒)
door.Transparency = 0 -- ドアを不透明にする(ドアの外側を見えるようにする)
end)
end
このスクリプトでは、プレイヤーがドアをクリックしたときに、ドアを透明にして2秒後に再び不透明に戻す処理を行っています。このスクリプトは基本的な例であり、必要に応じてカスタマイズできます。
- スクリプトをドアの内側に配置したら、ゲームをプレイしてテストしてみてください。プレイヤーがドアをクリックすると、ドアが開き、一定の時間後に閉じるはずです。
これは基本的な例ですが、Roblox Studioでのゲーム制作において、さまざまな方法でドアをクリックして開閉させることができます。必要に応じて、スクリプトをカスタマイズして、ゲーム内での動作を調整できます。
こちらはドアを透明にするという方法を教えてくれました。しかしプログラムをよく見ると CanCollide を False にしていませんね。これではドアを通り抜けることができません。
こちらも通り抜けられないことを質問することで、正しいプログラムを出力してくれると思います。
ChatGPT4の場合
最後に、まったく同じ質問をChatGPT4にしてみました。
【回答】
Robloxでクリックしてドアを開く機能を実装するには、Roblox Studio内でスクリプトを書く必要があります。以下はその基本的な手順です。
- ドアオブジェクトの準備: まず、ドアとして機能させたいオブジェクトを作成または選択します。
- クリック検出の追加: ドアオブジェクトに「ClickDetector」コンポーネントを追加します。これにより、プレイヤーがドアをクリックしたときにイベントをトリガーできます。
- スクリプトの作成: ドアオブジェクトにスクリプトを追加します。このスクリプトは、クリックイベントを検出し、それに応じてドアを開く動作を制御します。
- スクリプトの記述: 以下はドアを開くための基本的なLuaスクリプトの例です。
-- ドアオブジェクトの取得
local door = script.Parent
-- ClickDetectorコンポーネントの取得
local clickDetector = door:WaitForChild("ClickDetector")
-- クリックイベントの処理
local function onDoorClicked()
-- ドアを開く動作(例:回転、移動など)
door:TweenPosition(...) -- ここにドアの新しい位置を指定
end
-- イベントリスナーの設定
clickDetector.MouseClick:Connect(onDoorClicked)
- 動作のテスト: スクリプトを保存し、ゲームをプレイして動作を確認します。
これは基本的な例であり、必要に応じてドアの開閉速度、動きの方向、その他の要素をカスタマイズできます。また、セキュリティのために特定のプレイヤーのみがドアを開けられるように制限することも可能です。プログラミングの知識とRobloxのAPIについての理解が必要になります。
TweenPosition ? これはPartではなく、Guiオブジェクトにあるメソッドですよね。ただ、Tweenを使って動かそうとしているようです。
TweenPosition はPartにはないことを伝え訂正してもらいました。
【回答】Robloxでドアを開く動作を実装する際に TweenPosition
を使用することは、確かに Part
オブジェクトには直接適用できません。TweenPosition
は GuiObject
に対して使用されるメソッドで、UI要素の位置をアニメーションさせるために使用されます。
ドアのような物理オブジェクトを動かす場合、TweenService
を使用してアニメーションを作成するのが一般的です。以下に、TweenService
を使ってドアをアニメーションさせる基本的なスクリプトの例を示します。
- ドアオブジェクトの準備: ドアとして使用するPartを選択します。
- クリック検出の追加: ドアに
ClickDetector
を追加します。 - スクリプトの作成:
TweenService
を取得します。- ドアの開くときの目的の状態(位置、回転など)を定義します。
Tween
を作成して、ドアをアニメーションさせます。
- スクリプトの記述:
local TweenService = game:GetService("TweenService")
-- ドアオブジェクトの取得
local door = script.Parent
-- ClickDetectorコンポーネントの取得
local clickDetector = door:WaitForChild("ClickDetector")
-- アニメーションの設定
local goal = {} -- ここにドアの目的の状態を設定
goal.CFrame = door.CFrame * CFrame.new(0, 0, -5) -- 例: 5ユニット分移動
local tweenInfo = TweenInfo.new(
2, -- 時間(秒)
Enum.EasingStyle.Linear, -- イージングスタイル
Enum.EasingDirection.Out, -- イージング方向
0, -- 繰り返し回数
false, -- 反転
0 -- 遅延時間
)
local tween = TweenService:Create(door, tweenInfo, goal)
-- クリックイベントの処理
local function onDoorClicked()
tween:Play()
end
-- イベントリスナーの設定
clickDetector.MouseClick:Connect(onDoorClicked)
このコードでは、ドアがクリックされたときに、指定した位置に向かってアニメーションします。TweenInfo
とgoal
の設定を変更することで、アニメーションの速度や方向、距離などをカスタマイズできます。
やはりTweenアニメーションを使用したものに修正されました。こちらは回転ではなく移動になっていますが、一応プログラムは動作しました。
ドアにもたくさんの種類があり、開き方も様々です。よって質問するときはできるだけ詳しくドアの様子を説明すると的確な回答が得られると思います。
Robloxアシスタント、ChatGPT3.5、ChatGPT4で、回答がすべて異なるというのは面白いですね。
ついでに、先日実装された「DragDetector 」について質問したところ、ChatGPT3.5 は2022年1月まで、GPT4では2023年4月までの知識がないということで答えられませんでした。
Robloxアシスタントでも以下のような回答になりました。
【質問】新しく追加されたDragDetector について教えて
【回答】申し訳ありませんが、私の知識ではDragDetectorという新しいクラスや機能については情報を提供することができません。Robloxの公式ドキュメントや開発者フォーラムなどの情報源をチェックして、最新のアップデートや新機能について詳細を確認することをおすすめします。また、Robloxの公式ウェブサイトや開発者ドキュメントも参考になるかもしれません。
SOURCES: