Robloxのプログラミングでゲームを作る場合にobby(障害物競走)は最も基本的なゲームの1つです。
「roblox studioで簡単なゲームを作る」でも書いたようにコードを書かなくてもゲームは出来ます。
色々なギミック(仕掛け)を追加する事でゲームは面白くなったり難しくなったりします。
しかしながらギミックが思いつかなかったり思いついてもコードの書き方がわからなかったりします。
ここではギミックを簡単に作る方法を紹介していきます。obbyを作る際の参考にして頂ければと思います。
目次
robloxで作ったobbyのギミックはAI(chatgpt)で作る事が出来る
ここではchatgpt(AI)の無償版を使ってギミックのアイデアを出してみます。
ギミックのアイデアを出すプロンプト
AIに対する指示をプロンプトと言います。プロンプトにより出力されるものはかなり違ってきます。
ギミックのアイデアを出すプロンプトの例を書いてみます。
あなたは、プロのプログラマーです。
Robloxのプログラミングでobbyを作ります。obbyのアイデアを10個書いて下さい。
#条件
・プログラミングはLuaで行います。
・プログラミングを行うのはは小中学生です。#出力形式
・ギミック名
・ギミックの内容
・使うパーツ名。複数使う場合はすべて書いて下さい。
ギミックのアイデア
上記のプロンプトを実行した結果の一部を紹介します。毎回、同じ結果になるわけではありません。
Robloxのobby(アスレチックゲーム)のアイデアをいくつか提案しますね。小中学生向けに楽しく挑戦できるようなギミックを考えました。
1.ジャンプパッド
ジャンプパッドに乗ると、高く跳び上がることができます。
使用するパーツ名: Part, SurfaceGui, ClickDetector2.スピードブースター
通過すると一時的に速くなり、時間を競うゲームです。
使用するパーツ名: Part, SurfaceGui, ClickDetector3.ランダムなブロックの移動
プレイヤーが通るとランダムに移動するブロックがあり、タイミングが重要です。
使用するパーツ名: Part, SurfaceGui, ClickDetector4.落下する床
プレイヤーが乗ると一定時間後に床が落下し、新しい道が開きます。
使用するパーツ名: Part, SurfaceGui, ClickDetector5.旋回するプラットフォーム
プレイヤーが乗ると自動的に回転するプラットフォームがあり、上手く乗り移る必要があります。
使用するパーツ名: Part, SurfaceGui, ClickDetector6.透明なブロックの歩行
一部のブロックが透明になり、その上を通過しながら進む必要があります。
使用するパーツ名: Part, SurfaceGui, ClickDetector7.シーソー
プレイヤーの位置に応じてバランスが変わるシーソーを使って、チームで協力して進むゲームです。
使用するパーツ名: Part, SurfaceGui, ClickDetector8.壁のクライム
プレイヤーが壁を登る必要があるセクションがあります。壁を登るためのツールを提供します。
使用するパーツ名: Part, SurfaceGui, ClickDetector9.動く台座
台座が上下に移動し、プレイヤーがその上に乗り移る必要があります。
使用するパーツ名: Part, SurfaceGui, ClickDetector10.トランポリン
プレイヤーがトランポリンに乗り、遠くのプラットフォームにジャンプする必要があります。
使用するパーツ名: Part, SurfaceGui, ClickDetectorこれらのギミックはLuaで実装することができ、小中学生が楽しみながらプログラミングの基本を学ぶのに適しています。
10個で少なかったら20個や30個出して中から良さそうな物を選ぶというもの1つです。
ここで出た内容を次項で説明する事を実施するとプログラムまで作れます。
質問の仕方を変える事で違ったギミックが出力されるでしょう。
chatgtpで作ったプログラミングの事例を紹介
chatgtpを使ったプログラミングの事例を紹介します。
プロンプトとプログラムを紹介しますのでそのまま使っていいし、事例を参考に自分でやってみたいプログラミングを行ってもいいでしょう。
出力されるすべてのプログラムが動作するわけではありません。
パーツの色を赤色にする
プロンプト
どのようなプロンプトを入力すればプログラミングが作成出来るか例を使って説明していきます。
あなたは、プロのプログラマーです。
Robloxのプログラミングでパーツを赤くするプログラムを作ります。。
#条件
・プログラミングはLuaで行います。
・プログラミングを行うのはは小中学生です。
プログラミング
CHATGTPより出力された内容を紹介します。
プログラムは「コードをコピーする」で簡単にコピーが出来ます。
応用
パーツの色を赤くするを応用する事で別の色にしたり、赤→青にしたりなど応用してみましょう。。
以下例です。
・赤→青を1秒間隔で繰り返す
・色を1秒間隔でランダムな色にする
触れる触れると死ぬパーツ
Robloxでよく見かける触れたら死ぬパーツを作ってみましょう。AIを使えば簡単に出来ます。
プロンプト
触れる触れると死ぬパーツのサンプルプロンプトを紹介します。
あなたは、プロのプログラマーです。
Robloxのプログラミングで触れると死ぬパーツを作ります。。
#条件
・プログラミングはLuaで行います。
・プログラミングを行うのはは小中学生です。
プログラミング
chatgtpから出力されたコードのみ貼り付けます。前後の説明文はご自身で試して確認して下さい。
-- パーツを取得する
local part = script.Parent -- このスクリプトがアタッチされているパーツを取得する-- プレイヤーがパーツに接触したときのイベント処理
local function onTouched(hit)
-- hit.Parent がキャラクター(Humanoid)を持っている場合にのみ処理を行う
local humanoid = hit.Parent:FindFirstChildOfClass("Humanoid")
if humanoid then
-- キャラクター(Humanoid)をキルする
humanoid.Health = 0
end
end-- パーツに接触イベントを設定する
part.Touched:Connect(onTouched)
応用
応用として一度触れたら死ぬのではなく少しずつダメージを受けるようにする事も出来ます。
1秒間隔ですり抜けるようにする
obbyではよく見かけるパーツですね。すり抜けない時に飛んでいくパーツです。
プロンプト
1秒間隔ですり抜けるようにするパーツのサンプルプロンプトを紹介します。
あなたは、プロのプログラマーです。
Robloxのプログラミングで1秒間隔ですり抜けるパーツを作ります。。
#条件
・プログラミングはLuaで行います。
・プログラミングを行うのはは小中学生です。
プログラミング
chatgtpから出力されたコードのみ貼り付けます。前後の説明文はご自身で試して確認して下さい。
-- パーツを取得する
local part = script.Parent -- このスクリプトがアタッチされているパーツを取得する-- 透明度を変化させる関数
local function changeTransparency()
local transparency = 0 -- 初期透明度
local transparencyDelta = 0.1 -- 透明度の変化量while transparency <= 1 do part.Transparency = transparency transparency = transparency + transparencyDelta wait(1) -- 1秒待機 end end -- メインの処理 changeTransparency()
応用
すり抜けるようになるタイミングで色も透明になるとわかりやすいでしょう。
左右に動くパーツを作る
obbyではよく見かけるパーツで動いているパーツを飛んでいったりします。
プロンプト
左右に動くパーツパーツのサンプルプロンプトを紹介します。
あなたは、プロのプログラマーです。
Robloxのプログラミングで左右に動くパーツを作ります。。
#条件
・プログラミングはLuaで行います。
・プログラミングを行うのはは小中学生です。
プログラミング
chatgtpから出力されたコードのみ貼り付けます。前後の説明文はご自身で試して確認して下さい。
-- パーツを取得する
local part = script.Parent -- このスクリプトがアタッチされているパーツを取得する-- 色の配列
local colors = {
BrickColor.new("Bright red"),
BrickColor.new("Bright blue"),
BrickColor.new("Bright green"),
BrickColor.new("Bright yellow")
}-- メインの処理
local currentIndex = 1
local direction = 1
local speed = 2 -- 色を変える速度while true do
-- 色を設定する
part.BrickColor = colors[currentIndex]-- 次の色へ進む
currentIndex = currentIndex + direction-- インデックスの制御
if currentIndex > #colors then
currentIndex = 1
elseif currentIndex < 1 then currentIndex = #colors end -- 次の色へ進む前に待機する wait(speed) end
応用
実は上記の指定ではかなり条件が不足しています。
どこが不足しているかというかと以下の点です。
・どこからどこまで動く?
・動くスピードはいくら?
触れるとジャンプ力がアップする
これもobbyではよく見かけるギミックですね。
プロンプト
触れるとジャンプ力がアップするパーツのサンプルプロンプトを紹介します。
あなたは、プロのプログラマーです。
Robloxのプログラミングで触れるジャンプ力がアップするパーツを作ります。。
#条件
・プログラミングはLuaで行います。
・プログラミングを行うのはは小中学生です。
プログラミング
chatgtpから出力されたコードのみ貼り付けます。前後の説明文はご自身で試して確認して下さい。
-- パーツを取得する
local part = script.Parent -- このスクリプトがアタッチされているパーツを取得する-- ジャンプ力を増加させる関数
local function increaseJumpPower(player)
-- プレイヤーのキャラクターを取得する
local character = player.Character
if not character then
return
end-- ジャンプ力を増加させる
local humanoid = character:FindFirstChildOfClass("Humanoid")
if humanoid then
humanoid.JumpPower = humanoid.JumpPower + 50 -- ジャンプ力を50増やす(適宜調整可能)
end
end-- パーツに接触したときのイベント処理を設定する
part.Touched:Connect(function(hit)
-- 接触したオブジェクトがプレイヤーであるか確認する
local player = game.Players:GetPlayerFromCharacter(hit.Parent)
if player then
-- ジャンプ力を増加させる
increaseJumpPower(player)
end
end)
応用
具体的にどれだけジャンプ力がアップするか書いてありません。
2倍になるのか3倍になるのか?
プロンプトを考えて見ましょう。
robloxで作るobbyのギミックまとめ
AIでobbyのギミックを作る方法を紹介しました。AIとプログラミングはとても相性がいいので活用次第で他にも色々活用が出来ます。
注意をしないといけないのは、AIで作ったものは確認が必要という事です。
今後ますますAIは発達すると思われますが、2024年7月の時点では内容の確認は必要で作業の省力化の方法として使うのがいいでしょう。
robloxで作るobbyにおいては、ギミックの作り方がわかれば後はどのように組み合わせをするかだけです。
スタディルームレオロボット教室では、robloxプログラミングコースを導入しています。
興味がある人は体験にお越し下さい。