😸
【Roblox】Seatに座る/立ち上がるイベントを取得してみた
はじめに
今回は、RobloxのSeatオブジェクトに座る/立ち上がるイベントを取得する方法について解説します。
公式Reference
実装
オブジェクト配置
以下の画像のように、ワークスペースにSeatオブジェクトを配置します。
コード
local Players = game:GetService("Players")
local seat = workspace.Seat
local currentPlayer = nil
local function onOccupantChanged()
-- Seatに座ったプレイヤーを取得
local humanoid = seat.Occupant
if humanoid then
local character = humanoid.Parent -- Humanoidオブジェクトの親ノードがキャラクター
local player = Players:GetPlayerFromCharacter(character) -- キャラクターからプレイヤーを取得
if player then
print(player.Name .. " が座った")
currentPlayer = player -- 現在座っているプレイヤーを記録
return
end
end
-- 座っていたプレイヤーが立ち上がった場合
if currentPlayer then
print(currentPlayer.Name .. " が立ち上がった")
currentPlayer = nil -- 現在座っているプレイヤーをクリア
end
end
seat:GetPropertyChangedSignal("Occupant"):Connect(onOccupantChanged)
- プレイヤーサービスの取得:
game:GetService("Players")
でプレイヤーサービスを取得します。 - Seatオブジェクトの取得:
workspace.Seat
でSeatオブジェクトを取得します。 - currentPlayer変数: 現在座っているプレイヤーを保持する変数です。
onOccupantChanged関数: SeatオブジェクトのOccupantプロパティが変更されたときに呼び出される関数です。 - Occupantの取得:
seat.Occupant
でSeatに座っているHumanoid
を取得します。- プレイヤーの取得:
Humanoid
のParentからプレイヤーを取得します。 - プレイヤーが座った場合:
currentPlayer
にプレイヤーを代入し、メッセージを表示します。 - プレイヤーが立ち上がった場合:
currentPlayer
をnilに設定し、メッセージを表示します。
- プレイヤーの取得:
- イベント接続:
seat:GetPropertyChangedSignal("Occupant"):Connect(onOccupantChanged)
で、SeatオブジェクトのOccupantプロパティが変更されたときにonOccupantChanged関数を呼び出すように設定します。
実行
まとめ
本記事では、RobloxのSeatオブジェクトに座る/立ち上がるイベントを取得する方法について解説しました。このコードを応用することで、プレイヤーが座ったときや立ち上がったときに様々な処理を実行することができます。
Discussion