【Roblox Studio】特定の場所で特定のムービーが流れる 

○○の作り方

完成動画

はじめに

本記事では、プレイヤーが指定のパーツに触れたときに一度だけ動画を再生する仕組みを実装します。

使用する主な機能

  • Touchedイベント:パーツに触れた際のトリガーとして使用
  • Players:GetPlayerFromCharacter():触れた対象がプレイヤーかどうかを判定
  • PlayerGuiの操作:個々のプレイヤーにGUIを表示
  • VideoFrame:ゲーム内で動画を再生
  • Endedイベント:動画再生終了後の処理を設定
  • テーブル(playedPlayers):動画を再生済みのプレイヤーを記録

手順動画

エクスプローラー構成

Workspace
└Part
 └Script

StarterGui
 └ScreenGui(VideoGui)
  └VideoFrame

スクリプトの内容

Script

local part = script.Parent
local Players = game:GetService("Players")

-- 動画を再生済みのプレイヤーを記録するテーブル
local playedPlayers = {}

part.Touched:Connect(function(hit)
	local character = hit.Parent
	local player = Players:GetPlayerFromCharacter(character)

	if player and not playedPlayers[player] then
		local playerGui = player:WaitForChild("PlayerGui")
		local screenGui = playerGui:FindFirstChild("VideoGui")

		if screenGui then
			local videoFrame = screenGui:FindFirstChildOfClass("VideoFrame")
			if videoFrame then
				screenGui.Enabled = true
				videoFrame:Play()

				-- 動画再生が終わったら削除し、再生済みに記録
				videoFrame.Ended:Connect(function()
					screenGui:Destroy()
					playedPlayers[player] = true
				end)
			end
		end
	end
end)

partとPlayersの取得

local part = script.Parent
local Players = game:GetService("Players")
  • part:このスクリプトが挿入されているパーツそのもの。
  • Players:Roblox内のプレイヤー情報を管理するサービス。

再生済みプレイヤーの記録

local playedPlayers = {}
  • 動画を再生したプレイヤーをこのテーブルに記録して、2回目以降は再生しないようにする。

パーツに触れたときの処理

part.Touched:Connect(function(hit)
  • Touchedイベントで、パーツに何かが触れたときに発火します。
  • hitは触れたオブジェクト(例:足や腕の部品)です。

プレイヤーかどうかの判定と再生済みチェック

local character = hit.Parent
local player = Players:GetPlayerFromCharacter(character)

if player and not playedPlayers[player] then
  • 触れた部品から親(キャラクター)をたどり、プレイヤーを取得。
  • そのプレイヤーがすでに再生済みかどうかをチェック。

GUIとビデオの取得・再生

local playerGui = player:WaitForChild("PlayerGui")
local screenGui = playerGui:FindFirstChild("VideoGui")
  • プレイヤーの画面に表示されるPlayerGuiから、VideoGuiという名前のGUIを探す。
  • その中からVideoFrameを探して、再生する。
screenGui.Enabled = true
videoFrame:Play()
  • GUIを表示し、ビデオを再生します。

再生終了時の処理

videoFrame.Ended:Connect(function()
screenGui:Destroy()
playedPlayers[player] = true
end)
  • ビデオの再生が終了したら、
    • screenGuiを削除(画面から非表示+リソース削除)し、
    • playedPlayersに登録して、次回以降の再生を防ぐ。

補足

動画では、VideoFrameが画面全体ではなく上部分にすきまができていますが、これは、ScreenGuiのignoreguiinsetをオンにすることで改善できます。

チュートリアル系電子書籍の紹介
Roblox Studioでゲーム制作を始めてみませんか?
日本語版 ※英語版あり 「10時間でできる Roblox Studio アクションゲーム制作入門」では、Roblox Studioでのゲーム制作の基本から応用までを短時間で効率的に学びます。この一冊で、初心者でも簡単にアクションゲームを制作できるようになり、ゲーム制作の面白さと達成感を存分に味わうことができます。Roblox Studioの世界への扉を開き、あなたのクリエイティブな旅を始めましょう。
チュートリアル系動画
電子書籍を動画にしました!※無料クーポンあり!

「10時間でできる Roblox Studio アクションゲーム制作入門」の動画版では、書籍の内容をさらにわかりやすく、実際の画面操作を見ながら学べる形式でお届けします。初心者でも安心して取り組めるように、Roblox Studioの基本操作からアクションゲームの完成までを丁寧に解説。テンポよく進むレクチャー動画で、あなたのペースに合わせて学習できます。この動画シリーズを通して、ゲーム制作の基礎をしっかり習得し、Roblox Studioの可能性を広げましょう!

割引クーポンコードはこちらです↓
※3月12日21時まで!
6E0150A3770784ADF77D

Luaに関する電子書籍の紹介
Roblox Studioで使用するLua言語の基本を学ぼう!
日本語版 ※英語版あり 「5時間でできる Roblox Studio を使ったLuaの基本」では、Roblox Studioで使用するプログラミング言語Luaの基本をRoblox Studio上で学びます。また、学んだ知識を活かして、Roblox StudioでLuaを使用する応用部分も一部盛り込まれています。この一冊でLuaの基本を学ぶことで、よりRoblox Studioでのゲーム制作を楽しめるようになります。
アニメーション制作系電子書籍の紹介
Roblox Studioでアニメーションを作ってみよう!
「5時間でできる Roblox Studio アニメーション制作入門」では、Roblox Studioでのアニメーション制作の基本から実際に作るところまでを短時間で効率的に学びます。この一冊で、アニメーション制作の第一歩を踏み出すことができます。Roblox Studioで自由自在にアニメーションを作成し、よりクリエイティブなゲームを作りましょう!
○○の作り方Roblox Studio
シェアする
hideをフォローする
Roblox Studio 制作tips

コメント

タイトルとURLをコピーしました