触れたのは誰?
CoddyのLuaジャーニー「Robloxゲームのスクリプティング」セクションの一部。レッスン 14/24。
hitは体のパーツで、hit.Parentはその体のパーツが属するキャラクターです。Playersサービスを使うと、キャラクターを操作しているプレイヤーを取得できます。
local Players = game:GetService("Players")
local player = Players:GetPlayerFromCharacter(hit.Parent)接触したものがキャラクターではない場合(ボールや落下するレンガなど)、GetPlayerFromCharacterはnilを返すため、使う前に確認しましょう。
local player = Players:GetPlayerFromCharacter(hit.Parent)
if player then
print(player.Name .. " found the secret")
endプレイヤーを取得したら、その中にあるものなら何でも参照できます。たとえば、プレイヤーのスコアボードはplayer.leaderstats.Coins.Valueです。=を使ってValueを設定すると、値が置き換わります。
チャレンジ
中級光るパッドがお宝で、このスクリプトはその中にあります。すべてのプレイヤーには、すでにleaderstatsがあり、Coinsの値は0です。
プレイヤーがお宝に触れたら、その名前を出力し、Coinsを100に設定してください。プレイヤー以外のものが触れても、エラーが発生してはいけません。
Playを押して、お宝の上に乗り、スコアボードを確認してから、Checkを押してください。
自分で試してみよう
local Players = game:GetService("Players")
local treasure = script.Parent
treasure.Touched:Connect(function(hit)
local player = Players:GetPlayerFromCharacter(hit.Parent)
-- プレイヤーの場合、その名前を出力し、Coins を 100 に設定する
end)
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
Robloxゲームのスクリプティングのすべてのレッスン
自分で練習してみよう: Luaオンラインコンパイラ