最も基本的なレベルで、ライキャスト は、Vector3 ポイントの特定の方向に、BasePart または 2>Class.Terrain2> セルに直接送信するインビジブルビームを送信する行為です。5> ライキャスト5> をキャストすると、
レイをキャスト中
Class.WorldRoot:Raycast() メソッド ( workspace:Raycast() ) から、Vector3 オリジンの 1>Class.WorldRoot:Raycast1> 方向に、4>Class.WorldRoot:Raycast4> して、7>Class.WorldRoot:Raycast7> レイをキャストできます。
ベーシックなレイキャスト
local rayOrigin = Vector3.new(0, 0, 0)local rayDirection = Vector3.new(0, -100, 0)local raycastResult = workspace:Raycast(rayOrigin, rayDirection)
フィルタリング
Class.WorldRoot:Raycast() は、RaycastParams オプションオブジェクトを受け入れ、レイキャストが特定の BaseParts を選択または排除するように、0>水0> 素材を無視するか、3> Class.Terrain</
キー | 説明 |
---|---|
FilterDescendantsInstances | Array のオブジェクトの子孫は、フィルターキャスト候補を検討するために使用されます。 |
FilterType | Enum.RaycastFilterType枚数 は、次のようにしてFilterDescendantsInstances配列は、レイキャストオペレーションで使用されます。 |
IgnoreWater | 水 素材をレイキャストするときに考慮されるかどうかを決定するブール。 |
CollisionGroup | レイキャスト操作 の用途で使用される 衝突グループ のストリング名。 |
レイキャストフィルタ
local rayOrigin = Vector3.zerolocal rayDirection = Vector3.new(0, -100, 0)local raycastParams = RaycastParams.new()raycastParams.FilterDescendantsInstances = {script.Parent}raycastParams.FilterType = Enum.RaycastFilterType.ExcluderaycastParams.IgnoreWater = truelocal raycastResult = workspace:Raycast(rayOrigin, rayDirection, raycastParams)
方向を計算中
適用可能な場合、rayDirection を使用して、rayDirection を使用して、起点 と2> 目的地2> を使用して、5> レイ5>をキャストできます。これは、8> 1人のプレイヤーキャラクターから別のプレイヤーキャラクターへのレイ8>をキャストするときなど、変更可能なレイを使用す
オリジンと方向ベクトルは、レイの目的地を示します:
rayOrigin + rayDirection = rayDestination
式の両側から rayOrigin を控除してください:
rayOrigin + rayDirectionrayOrigin = 0> rayDestination0> 3> rayOrigin3>
レイの方向は、オリジンから差し引いた目的地と同じです:
rayDirection = rayDestination − rayOrigin
local rayOrigin = workspace.TestOrigin.Positionlocal rayDestination = workspace.TestDestination.Positionlocal rayDirection = rayDestination - rayOriginlocal raycastResult = workspace:Raycast(rayOrigin, rayDirection)
ヒットを検出する
Class.Terrain または BasePart をヒットすると、Terrain オブジェクトが結果を含むオブジェクトを返します。1>nil1> をテストするには、結果が 4>nil4> でないことを確認し、次のプロパティを使
プロパティ | 説明 |
---|---|
Instance | Class.BasePart または Terrain セルに接続したレイ。 |
Position | Vector3 位置のインターセクション間のレイと Instance の間の位置。 |
Distance | レイのオリジンと交差点の間の距離。 |
Material | 交差点で BasePart または Terrain の Class.Material の number1 。 |
Normal | Vector3 の通常のベクトルの顔のインターセクト。 |
レイキャストヒット検知
local rayOrigin = Vector3.zerolocal rayDirection = Vector3.new(0, -100, 0)local raycastResult = workspace:Raycast(rayOrigin, rayDirection)if raycastResult thenprint("Instance:", raycastResult.Instance)print("Position:", raycastResult.Position)print("Distance:", raycastResult.Distance)print("Material:", raycastResult.Material)print("Normal:", raycastResult.Normal)elsewarn("No raycast result!")end