RobloxStudioで「Raycast」を実装するメモになります。
はじめに
RobloxStudioでゲームを作成したことがない、または初めてゲームを作成する場合の参考記事は下記になります。
今回は、RobloxStudioの「Raycast」の基本を確認していきます。
Raycastを直訳すると「Ray=光線」、「cast=投げる」と言う感じです。センサーを出して、接触したオブジェクトを検知するのがRaycastです。
製作開始
まずは光線を出すパーツとターゲットのパーツを作成します。大きさや形は好きなものでOKです。それぞれ名前を「RayStart」、「Target」にします。

「StarterPlayer」配下の「StarterCharacterScripts」にLocalScriptを追加します。名称を「RayCast_script」にします。

スクリプトの中身を下記に変更します。
local Workspace = game:GetService("Workspace")
local start = Workspace.RayStart.Position
local target = Workspace.Target.Position
local direction = target - start
local raycastResult = Workspace:Raycast(start,direction)
if raycastResult == nil then
print("No result")
else
print(raycastResult.Instance)
end
実行すると下記のような感じにRayが発射されます。

公式リファレンスは下記です。
途中に壁を作成すると壁にRayが当たります。

スクリプトの中身を下記に変更してフィルターを追加します。
local Workspace = game:GetService("Workspace")
local start = Workspace.RayStart.Position
local target = Workspace.Target.Position
local direction = target - start
local raycastParams =RaycastParams.new()
raycastParams.FilterDescendantsInstances = {Workspace.Wall}
raycastParams.FilterType = Enum.RaycastFilterType.Exclude
local raycastResult = Workspace:Raycast(start,direction,raycastParams)
if raycastResult == nil then
print("No result")
else
print(raycastResult.Instance)
end
壁を抜けてターゲットに届くようになります。

