【Roblox】カメラの位置をコントロールする
はじめに
こんにちは、まつさこ です。
Roblox Studio でエクスペリエンスを開発する際、カメラの位置をコントロールする方法を紹介します。カメラの位置をコントロールすることで、オープニングムービーのようなものを作成したり、ゲーム内の特定の場所を強調したりすることができます。
CameraType
Roblox Studio では、カメラの位置をコントロールするために CameraType
というプロパティを利用します。CameraType
には以下の値を設定することができます。
-
Enum.CameraType.Custom
: デフォルト設定 -
Enum.CameraType.Fixed
: 固定カメラ -
Enum.CameraType.Follow
: 特定のパーツを常に画面中央に見るように追跡して移動するカメラ -
Enum.CameraType.Attach
: 特定のパーツの回転やオフセット設定に追従するカメラ -
Enum.CameraType.Track
: 特定のパーツを追跡して移動するが、自動で回転はしないカメラ -
Enum.CameraType.Watch
: 特定のパーツを常に画面中央に見るように回転するカメラ -
Enum.CameraType.Scriptable
: スクリプトで制御されるカメラ
公式ドキュメントはこちら
今回はこの中でも Enum.CameraType.Scriptable
を使って、スクリプトでカメラの位置を制御する方法を解説します。
カメラの位置を制御する
カメラの位置を制御するには、CameraType
を Enum.CameraType.Scriptable
に設定し、スクリプトでカメラの位置を制御します。
以下のスクリプトは、カメラの位置をプレイヤーの位置に追従させる例です。
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local player = Players.LocalPlayer
local camera = game.Workspace.CurrentCamera
camera.CameraType = Enum.CameraType.Scriptable
local function updateCamera()
if player.Character then
local character = player.Character
local rootPart = character:FindFirstChild("HumanoidRootPart")
if rootPart then
camera.CFrame = CFrame.new(rootPart.Position + Vector3.new(0, 5, -10), rootPart.Position)
end
end
end
RunService.RenderStepped:Connect(updateCamera)
このスクリプトでは、RunService.RenderStepped
イベントを利用して、毎フレームごとにカメラの位置を更新しています。
動作させてみると、一見いつものカメラと変わらないように見えますが、 Enum.CameraType.Custom
の場合と比べて、回転やズームなどの操作ができないことがわかります。
また、オープニングムービーのように、特定の場所を強調するためにカメラの位置を変更することもできます。以下のスクリプトは、TweenService を使ってカメラの位置を変更する例です。
local TweenService = game:GetService("TweenService")
local camera = game.Workspace.CurrentCamera
camera.CameraType = Enum.CameraType.Scriptable
local function moveCamera()
local goal = {}
goal.CFrame = CFrame.new(Vector3.new(0, 10, -10), Vector3.new(0, 0, 0))
local tweenInfo = TweenInfo.new(5, Enum.EasingStyle.Linear, Enum.EasingDirection.InOut, -1, true)
local tween = TweenService:Create(camera, tweenInfo, goal)
tween:Play()
tween.Completed:Wait()
-- カメラをデフォルトに戻す
camera.CameraType = Enum.CameraType.Custom
end
moveCamera()
このスクリプトを実行すると、カメラがゆっくりと指定した位置に移動します。TweenService を使うことで、カメラの移動をスムーズにすることができます。
まとめ
今回は、Roblox Studio でカメラの位置を制御する方法を紹介しました。 Enum.CameraType.Scriptable
を使って、スクリプトでカメラの位置を制御することができるので、ぜひ活用してみてください。
読んでくださりありがとうございました🤗
Discussion