🙌

【ロブロックス】マウスでクリックしたところにあるオブジェクトを取得する方法

2024/08/06に公開

はじめに

今回はマウスでクリックした部分にあるオブジェクトを取得しその名前をログ出力する方法を共有します。

実装

適当に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についてはこちら
https://zenn.dev/landel_tech/articles/b824a99c18ed19

UserInputServiceについてはこちら
https://zenn.dev/landel_tech/articles/06d4898d584331

実行

https://youtu.be/-uKE7_phqgE

Landelテックブログ

Discussion