チャプター 3

Step 03

AIに聞いてみよう!

AIにおかしなところを直してもらおう

火の玉がPlayerに当たったら音がなるようにしましたが、当たった時に何度も音が出ます。これをどうやって直すか、AIに聞いています。
ただし、どんなコードを書いているかを全部説明するのは大変。そこで、質問の下に今書いているコードを全部コピペするという裏技うらわざがあるんです!

質問ボックスにはこうやって入れます:

「このコードでは、Playerが球に当たると何度も音が鳴ります。Playerがそれぞれの球に当たったら一度だけ音を鳴らしたいです。どんなコードにしたらよいか教えてください」
👉そしてPlayerHitのスクリプトを全部貼り付けます。

🙆‍♂️AI質問のコツ:すでに書いてあるコードに追加するものを聞きたい場合は、そのコードを全部コピペしてAIに見せてあげるといいよ。質問のあとにShift + Enterで「改行かいぎょう」してからコードを貼り付けるといいよ!

そしてAIが見せてくれたコードはこれです。もしみなさんのほうでうまくいかなかったらこのコードを使ってみてください。PlayerHitのスクリプトの中身をすべてこれで上書うわがきすればよいです。

-- 自分のPlayerを取得
local player = game.Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()
local humanoid = character:WaitForChild("Humanoid")

-- サウンドを追加
local sound = Instance.new("Sound")
sound.SoundId = "rbxassetid://2865228021"
sound.Parent = player

-- すでに当たったFireBallを記録するテーブルを作成
local touchedFireBalls = {}

-- 体がどこから当たったら呼び出される関数
local function onTouch(hitObj)
-- 当たったものがFireBallだったら
if hitObj.Name == "FireBall" then
-- まだこのFireBallに当たっていなかったら
if not touchedFireBalls[hitObj] then
-- サウンドを再生
sound:Play()
-- このFireBallに当たったことを記録
touchedFireBalls[hitObj] = true
end
end
end

-- 体が当たったら呼び出す関数を決める
humanoid.Touched:Connect(onTouch)