チャプター 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)
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)
ここまでの完成版はこちら!