Chat-GPTとS君のRobloxプログラミング奮闘記
Chat-GPTでロブロックスのプログラムを作る道のり
中学3年生のS君は、ゲームをプレイすることが大好きな少年です。普段はRobloxで遊んでいます。そしてRobloxのプログラミングも学んでいます。
たくさんのゲームであそんでいるので、その強みもいかして、普段もセンス良くゲームもつくりコーディングや手早くなっています。
そんな彼に今回、実験的にChat-GPTを使ってコーディングに挑戦してもらいました。S君にとって、Chat-GPTは初めての経験でした。
まずは簡単なコードから、少しずつStep by Stepで!
S君の最初のチャレンジは、「ブロックが3D空間のランダムな場所に現れ、5秒ごとに瞬間移動する」というプログラムを作ることにしました。
Chat-GPTにコードをお願いしてみたものの、どう質問すればいいのかが分からず、S君は戸惑っていました。そこで、「人にお願いするみたいに文章にしてみたら?」とアドバイス。何度か試しますが、コンピュータが理解しづらそうな言い回しが多く、なかなか良い結果が返ってきません。
「こう聞いてみたら?」とヒントを出しながら、何度か質問を試みましたが、返ってくるのはコードではなく、コードを作るための考え方ばかりでした。
そこで、S君が欲しいのは「プログラム」ではなく「コード」であること、そしてRobloxではLuaという言語が使われていることを伝えながら、質問の仕方を工夫していきました。数回質問を繰り返した結果、ようやくそれらしいプログラミングコードがChat-GPTから出力されました。
コードの冒頭が「local part = script.Parent」で始まっていたので、
S君はRoblox Studioを起動し、画面にブロックを作って、その配下にスクリプトを作成。エディターを開いて、Chat-GPTから出力されたコードをコピーして貼り付けました。
そして、とりあえず実行! エラーもなく実行できましたが、ブロックが見づらい状態です。
Baseplate(地面のパーツ)が邪魔をしているので、手動でそれを消し、ついでにブロックにアンカー(固定)のチェックを入れました。このあたりの操作は、すっかり手慣れたものです。しっかりと学んでいることを実感できる瞬間でした。
また、こういった細かい点にもすぐに気付けるS君。自分で気づいたことをしっかり褒めて、そのまま作業を続けてもらいました。
そして、最後に「コードにコメントを入れてください」とChat-GPTにお願いし、説明コメント付きのコードが完成。分かりやすく整理することができました。
5秒ごとに瞬間移動するコード、完成
次のステップ: 移動のたびに色を変える
次のチャレンジは、「ブロックが移動するたびに色を変える」という機能を追加することです。再びChat-GPTに「移動するたびに色を変えてください」とお願いしました。
やはり最初は、そのプログラムの作り方の手順が言葉で返ってきます。そこで、「コードでお願いします」と問いかけると、今度はしっかりとコードが出力されました。Roblox Studioに貼り付けて実行すると、問題なく一発で成功!
おー、S君もだんだん慣れてきた様子です。
最終ステップ: クローンを作る
最後のステップは「ブロックのクローンを作る」ことです。
ブロックが5秒ごとに瞬間移動するたびに、自分のクローンを作るようにしました。こちらもすぐに成功! 画面にはブロックがゆっくりと増えていきますが、ある時から突然、指数関数的に増え始め、あっという間に画面がブロックでいっぱいに。
まるでドラえもんの「バイバイン」の世界のようで、少し恐怖を感じました。
何度か微調整を繰り返したS君でしたが、自分の作ったワールドが気に入ったのか、いつしかゲームの世界の住人のように、夢中で視点をぐるぐる回転させたり、ブロックを飛び回ってあちらこちらに移動したりしていました。
もう、今日はコードを作ることよりも、この世界で遊ぶことに夢中です。
ここで今日の実験は終了。とても楽しそうに夢中になっているS君の姿に、こちらも嬉しくなりました。作ったコードはしっかり保存してあるので、次回はこの続きの物語を、またChat-GPTで作ってもらおうと思っています。
最終的なコード
-- 瞬間移動させるPartを取得
local part = script.Parent
-- 移動する範囲と間隔の設定
local moveRange = 50 -- Partが移動する範囲(±50 studs)
local moveInterval = 2 -- 移動する間隔(秒)
-- 色のリストを設定
local colors = {
BrickColor.new("Bright red"), -- 赤色
BrickColor.new("Bright blue"), -- 青色
BrickColor.new("Bright green"), -- 緑色
BrickColor.new("Bright yellow"),-- 黄色
BrickColor.new("Bright orange") -- オレンジ色
}
-- 移動回数カウンター
local moveCount = 0
-- 瞬間移動と色変更の関数
local function teleport()
-- ランダムな位置を生成(移動範囲内で)
local randomX = math.random(-moveRange, moveRange)
local randomY = math.random(-moveRange, moveRange)
local randomZ = math.random(-moveRange, moveRange)
-- 現在の位置からランダムな位置を計算
local newPosition = part.Position + Vector3.new(randomX, randomY, randomZ)
-- 新しい位置に瞬間移動
part.Position = newPosition
-- ランダムに色を変更
local randomColor = colors[math.random(1, #colors)] -- 色のリストからランダムに選ぶ
part.BrickColor = randomColor -- Partの色を変更
-- 移動回数をカウント
moveCount = moveCount + 1
-- 5回移動するごとにクローンを生成
if moveCount >= 5 then
-- クローンを生成
local clone = part:Clone()
clone.Position = part.Position + Vector3.new(0, 5, 0) -- クローンを少し上に配置
clone.Parent = workspace -- クローンをワークスペースに追加
-- 移動回数をリセット
moveCount = 0
end
end
-- 定期的に瞬間移動を実行
while true do
teleport() -- 瞬間移動と色変更を実行
wait(moveInterval) -- 次の瞬間移動まで指定した秒数だけ待機
end
このコードの概要(Chat-GPTにコードを読ませて作成)
このプログラムは、Robloxのゲーム環境内で特定のPart(オブジェクト)を定期的にランダムな位置に瞬間移動させ、 そのたびにランダムな色に変更する機能を実装しています。
さらに、移動回数をカウントし、5回目の移動が完了するたびに Partのクローンを生成し、元のPartの少し上に配置します。この動作は無限ループで繰り返され、指定された時間間隔で 実行され続ける仕組みです。
Partの瞬間移動は、指定された範囲(±50スタッド)内で行われ、X, Y, Z軸それぞれにランダムな座標が生成されます。 また、Partの色は予め定義された5つの色(赤、青、緑、黄色、オレンジ)の中からランダムに選ばれて変更されます。 この機能により、視覚的に動的な変化をもたらし、ゲーム内でプレイヤーにインタラクティブな体験を提供します。
さらに、このスクリプトはカウント機能を持っており、Partが移動するたびに移動回数が記録され、5回移動が行われると 自動的にPartのクローンが生成されます。クローンは元のPartの位置から少し上(5スタッド)に配置され、ワークスペース内に 追加されます。このクローン生成により、ゲーム内でのオブジェクトの増加や視覚的変化をプレイヤーに提供し、
インタラクティブな要素を増やします。
-
Partの瞬間移動
スクリプトが開始すると、最初にPartが±50スタッドの範囲内でランダムに生成されたX, Y, Z軸の座標へ瞬間移動します。 これにより、Partがゲーム内で視覚的にランダムな場所に移動するように見えます。 -
色のランダム変更
瞬間移動が完了すると、Partの色がランダムに変更されます。事前に設定された5つの色(赤、青、緑、黄色、オレンジ)の中から 1つがランダムで選ばれ、Partの色が変更されます。このプロセスは、毎回移動するたびに行われ、Partが移動するだけでなく 色も変わるため、視覚的なインパクトが強くなります。 -
移動回数のカウント
Partが瞬間移動するたびに移動回数がカウントされます。カウントはスクリプト内で記録され、5回移動するごとに クローン生成がトリガーされます。これにより、一定回数のアクションが完了するたびに新たな変化が発生する仕組みを 提供しています。 -
クローンの生成
5回目の移動が行われた際に、Partのクローンが生成されます。生成されたクローンは、元のPartの少し上(5スタッド)に 配置され、ワークスペース内に追加されます。このクローンは、元のPartと同じ動作をしませんが、ゲーム内で新たな オブジェクトとして視覚的な増加をもたらします。移動回数がリセットされ、再び5回移動が行われるとクローンが生成される ループが続きます。 -
無限ループによる繰り返し処理
スクリプトはwhile true
の無限ループで実行されており、指定された2秒間隔ごとに瞬間移動と色変更が繰り返されます。 これにより、ゲーム内でPartが一定のリズムで動き続け、プレイヤーに対してランダムな変化を提供します。 このプロセスは無限に繰り返されるため、Partがランダムに移動し続け、インタラクティブな要素が途切れることなく維持されます。
```
コメントをお書きください