レイキャスト

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

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

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

You can cast a ray with the WorldRoot:Raycast() メソッド ( Workspace:Raycast() ) from a Vector3 原点 in a 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)

適用可能な場合、既知の 出典 と 目的地 を使用して、不明な方向ベクトルを計算できます( )。これは、1人のプレイヤーキャラクターから別のものに変更できる 2つのポイント間のレイをキャストするときに便利です。

  1. 起源と方向向きベクトルは、レイの目的地を示します:

    rayOrigin + rayDirection = rayDestination

  2. 方程式の両側から rayOrigin を差し引く:

    rayOrigin + rayDirectionrayOrigin = rayDestinationrayOrigin

  3. レイの方向は、目的地から原点を減じたものと同じです:

    レイ方向 = レイ目的地 - レイ起源


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)

フィルタオプション

は、レイキャストに特定の を選択的に含めるか排除するように指示するオプションの オブジェクトを受け入れ、 水 素材を無視したり、 コライドグループ を使用したりします。

キー説明
FilterDescendantsInstancesArray オブジェクトの子孫がフィルタリングレイキャスト候補に使用されるオブジェクトのうち
FilterTypeEnum.RaycastFilterType 列挙体は、FilterDescendantsInstances 配列がレイキャスト操作で使用される方法を決定します。
  • Exclude — すべての BasePart は、配列のオブジェクトの子孫でないものを除き、考慮されます **** 。
  • — 配列のオブジェクトの子孫のみが考慮されます。
IgnoreWaterBoolean は、 水 素材をレイキャストするときに考慮されるかどうかを決定します。
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 セル。
PositionVector3 レイと Instance の交点の位置。
Distanceレイの起源と交差点の間の距離。
Material交差点での Enum.Material または BasePart または Terrain の 。
NormalVector3 インターセクトした顔の普通のベクトル。
レイキャストヒット検出

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("Instance:", raycastResult.Instance)
print("Position:", raycastResult.Position)
print("Distance:", raycastResult.Distance)
print("Material:", raycastResult.Material)
print("Normal:", raycastResult.Normal)
else
warn("No raycast result!")
end