😸

【Roblox】Seatに座る/立ち上がるイベントを取得してみた

2024/08/16に公開

はじめに

今回は、RobloxのSeatオブジェクトに座る/立ち上がるイベントを取得する方法について解説します。

公式Reference

https://create.roblox.com/docs/ja-jp/reference/engine/classes/Seat

実装

オブジェクト配置

以下の画像のように、ワークスペースに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関数を呼び出すように設定します。

実行

https://youtu.be/E_61JriSytg

まとめ

本記事では、RobloxのSeatオブジェクトに座る/立ち上がるイベントを取得する方法について解説しました。このコードを応用することで、プレイヤーが座ったときや立ち上がったときに様々な処理を実行することができます。

Landelテックブログ

Discussion