RobloxStudioでRaycastを実装|Robloxゲーム作成メモ

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

壁を抜けてターゲットに届くようになります。

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