レイキャスティング

*このコンテンツは、ベータ版のAI(人工知能)を使用して翻訳されており、エラーが含まれている可能性があります。このページを英語で表示するには、 こちら をクリックしてください。

最も基本的なレベルでは、レイキャスティングは、特定の方向に定義された長さでVector3ポイントから見えないレイを送信する行為です。レイを放つと、BasePartまたはTerrainセルにレイが当たるかどうかを検出できます。

浮遊するオーブによってレーザーが発射され、レイキャスティングによってレーザーがプラットフォームに当たるかどうかが決まります。レーザーに触れたプラットフォームは一時的に破壊されます。

WorldRoot:Raycast()メソッド(Workspace:Raycast())を使用して、Vector3の起点からVector3の方向にレイを放つことができます。

基本的なレイキャスト

local Workspace = game:GetService("Workspace")
local rayOrigin = Vector3.new(0, 0, 0)
local rayDirection = Vector3.new(0, -100, 0)
local raycastResult = Workspace:Raycast(rayOrigin, rayDirection)

可能な場合、既知の起点目的地を使用して未知の方向ベクトル(rayDirection)を計算できます。これは、一方のプレイヤーキャラクターから別のキャラクターへのように、変更可能な2つのポイントの間にレイを放つときに便利です。

  1. 起点に方向ベクトルを加えると、レイの目的地を示します:

    rayOrigin+rayDirection=rayDestination\text{rayOrigin} + \text{rayDirection} = \text{rayDestination}

  2. 方程式の両側からrayOrigin\text{rayOrigin}を引きます:

    rayOrigin+rayDirectionrayOrigin=rayDestinationrayOrigin\text{rayOrigin} + \text{rayDirection} - \text{rayOrigin} = \text{rayDestination} - \text{rayOrigin}

  3. レイの方向は目的地から起点を引いたものに等しいです:

    rayDirection=rayDestinationrayOrigin\text{rayDirection} = \text{rayDestination} - \text{rayOrigin}


local Workspace = game:GetService("Workspace")
local rayOrigin = Workspace.TestOrigin.Position
local rayDestination = Workspace.TestDestination.Position
local rayDirection = rayDestination - rayOrigin
local raycastResult = Workspace:Raycast(rayOrigin, rayDirection)

フィルタオプション

WorldRoot:Raycast()は、オプションのRaycastParamsオブジェクトを受け入れ、レイキャストが特定のBasePartsを選択的に含めるか除外するか、Terrainマテリアルを無視するか、衝突グループを使用するよう指示します。

キー説明
FilterDescendantsInstancesレイキャスティングの候補をフィルタリングするために使用されるオブジェクトのArray
FilterTypeEnum.RaycastFilterType列挙型で、レイキャスト操作におけるFilterDescendantsInstances配列の使用方法を決定します。
  • Exclude — 配列内のオブジェクトの子孫でないすべてのBasePartが考慮されます。
  • Include — 配列内のオブジェクトの子孫であるBasePartsのみが考慮されます。
IgnoreWaterレイキャスティング時にTerrainに対してマテリアルが考慮されるかどうかを決定するブール値。
CollisionGroupレイキャスティング操作に使用される衝突グループの文字列名。
レイキャストフィルタリング

local Workspace = game:GetService("Workspace")
local rayOrigin = Vector3.zero
local rayDirection = Vector3.new(0, -100, 0)
local raycastParams = RaycastParams.new()
raycastParams.FilterDescendantsInstances = {script.Parent}
raycastParams.FilterType = Enum.RaycastFilterType.Exclude
raycastParams.IgnoreWater = true
local raycastResult = Workspace:Raycast(rayOrigin, rayDirection, raycastParams)

ヒット検出

レイキャスティング操作が適格なBasePartまたはTerrainセルに当たると、結果を含むRaycastResultオブジェクトが返されます。ヒットをテストするには、結果がnilでないことを確認し、必要に応じて以下のプロパティを利用します。

プロパティ説明
Instanceレイが交差したBasePartまたはTerrainセル。
PositionレイとInstanceとの交差点のVector3位置。
Distanceレイの起点と交差点間の距離。
Material交差点にあるBasePartまたはTerrainEnum.Material
Normal交差した面の法線ベクトルのVector3
レイキャストヒット検出

local Workspace = game:GetService("Workspace")
local rayOrigin = Vector3.zero
local rayDirection = Vector3.new(0, -100, 0)
local raycastResult = Workspace:Raycast(rayOrigin, rayDirection)
if raycastResult then
print("インスタンス:", raycastResult.Instance)
print("位置:", raycastResult.Position)
print("距離:", raycastResult.Distance)
print("マテリアル:", raycastResult.Material)
print("法線:", raycastResult.Normal)
else
warn("レイキャスト結果がありません!")
end
©2026 Roblox Corporation。Roblox(ロブロックス)、RobloxロゴおよびPowering Imaginationは、米国並びにその他の国における登録商標および非登録商標です。