🎉
【Roblox開発】Raycastが当たったPartの色を変えてみる
はじめに
今回はRaycastを利用して当たったオブジェクトに対して何か操作をする方法を共有します。
公式Reference
実装
オブジェクト配置
Partを二つ配置します。
今回はFirstPartからSecondPartに対してRayを出すようにします。
コード
local firstPart = workspace.FirstPart
local secondPart = workspace.SecondPart
while true do
local direction = secondPart.Position - firstPart.Position
local raycastResult = workspace:Raycast(firstPart.Position, direction)
if raycastResult then
local distance = raycastResult.Distance
local color = Color3.new(1 - distance / 100, 0, 0)
raycastResult.Instance.Color = color
print("Distance : "..distance)
else
warn("No raycast result!")
end
task.wait(1)
end
workspace:Raycast(firstPart.Position, direction)
でRayを出す原点と方向を指定しRayを出します。
raycastResult
に当たったオブジェクトの情報が格納されます。
今回は当たったオブジェクトとRayの原点からの距離に応じてColorのRed成分を変更し当たったオブジェクトの色を変更しています。
RayCastに反応しないオブジェクトを設定する
RayをさえぎるPartを配置します。
local firstPart = workspace.FirstPart
local secondPart = workspace.SecondPart
while true do
local direction = secondPart.Position - firstPart.Position
local params = RaycastParams.new()
params.FilterType = Enum.RaycastFilterType.Exclude
params.FilterDescendantsInstances = {workspace.Part}
local raycastResult = workspace:Raycast(firstPart.Position, direction, params)
if raycastResult then
local distance = raycastResult.Distance
local color = Color3.new(1 - distance / 100, 0, 0)
raycastResult.Instance.Color = color
print("Distance : "..distance)
else
warn("No raycast result!")
end
task.wait(1)
end
以下の部分でRayに反応させないPartを指定しRaycast
関数の引数にその設定情報を入れます。
params.FilterType = Enum.RaycastFilterType.Exclude
params.FilterDescendantsInstances = {workspace.Part}
実行
Discussion