🙌
【ロブロックス】マウスでクリックしたところにあるオブジェクトを取得する方法
はじめに
今回はマウスでクリックした部分にあるオブジェクトを取得しその名前をログ出力する方法を共有します。
実装
適当にPartを設置
コード
StarterPlayer
内のStarterPlayerScripts
にLocalScriptを配置する。
local UserInputService = game:GetService("UserInputService")
local camera = workspace.CurrentCamera
local player = game.Players.LocalPlayer
local function mouseRaycast()
local mouseLocation = UserInputService:GetMouseLocation()
local mouseRay = camera:ViewportPointToRay(mouseLocation.X, mouseLocation.Y)
local raycastParams = RaycastParams.new()
raycastParams.FilterType = Enum.RaycastFilterType.Exclude
raycastParams.FilterDescendantsInstances = {player.Character}
local raycastResult = workspace:Raycast(mouseRay.Origin, mouseRay.Direction * 1000, raycastParams)
if raycastResult then
return raycastResult
end
return nil
end
UserInputService.InputBegan:Connect(function(input, gameProcessedEvent)
if gameProcessedEvent then
return
end
if input.UserInputType == Enum.UserInputType.MouseButton1 then
local raycastResult = mouseRaycast()
if raycastResult then
print(raycastResult.Instance.Name)
end
end
end)
UserInputService:GetMouseLocation()
でマウスの位置を取得し
camera:ViewportPointToRay(mouseLocation.X, mouseLocation.Y)
でマウスの位置からRayをworkspace上に飛ばしてる感じです。
InputBegan
イベントでマウスでクリックしたことを受けとりその場所のオブジェクト情報を取得している感じになっています。
Raycastについてはこちら
UserInputServiceについてはこちら
実行
Discussion