RayValue
*เนื้อหานี้แปลโดยใช้ AI (เวอร์ชัน Beta) และอาจมีข้อผิดพลาด หากต้องการดูหน้านี้เป็นภาษาอังกฤษ ให้คลิกที่นี่
มูลค่ารังสีเป็นวัตถุที่มีจุดประสงค์เพื่อจัดเก็บรังสีเดียวคล้ายกับ CFrameValue รังสีที่เก็บไว้ของ RayValue ไม่สามารถดูหรือแก้ไขภายในหน้าต่างคุณสมบัติภายในสตูดิโอได้แทนที่ใช้แถบคําสั่งเพื่อรับและตั้งค่ามูลค่าของวัตถุเหล่านี้ตัวอย่างเช่น คุณสามารถใช้บรรทัดเช่นที่อยู่ด้านล่างเพื่อสร้าง RayValue ใหม่ชื่อ "Value" ภายใน Workspaceมันสร้างลําแสงที่ (0, 50, 0) และมันเผชิญไปในทิศทางบวก-X
Instance.new("RayValue").Value = Ray.new(Vector3.new(0, 50, 0), Vector3.new(10, 0, 0))
เนื่องจากไม่มีวิธีง่ายๆ ในการแก้ไขรังสีภายใน Studio บางครั้งจึงเป็นการดีกว่าที่จะใช้ CFrameValue แทน (ซึ่งสามารถเปลี่ยนแปลงได้ผ่านส่วนหรือกล้อง)คุณสามารถสร้างลำแสงจาก CFrame โดยใช้ Ray.new(cf.p, cf.lookVector * dist) ซึ่ง cf เป็น CFrame ที่กำหนดและ dist คือความยาวของลำแสงที่คุณต้องการสร้าง
เช่นเดียวกับวัตถุ "-Value" ทั้งหมด ค่าเดียวนี้จะถูกจัดเก็บในคุณสมบัติมูลค่าอีเวนต์ที่เปลี่ยนแปลงสำหรับสิ่งนี้ (และวัตถุอื่นๆ เช่นเดียวกับมัน) จะยิงด้วยค่าใหม่ที่ถูกเก็บไว้ในวัตถุแทนที่จะเป็นสตริงที่แทนที่คุณสมบัติที่เปลี่ยนแปลง
ตัวอย่างโค้ด
ตัวอย่างโค้ดนี้แสดงการสร้างเรย์โดยเก็บเรย์ไว้ภายใน RayValue และการคาดการณ์เรย์เพื่อค้นหาส่วนอื่นระหว่างส่วนสองส่วนที่ชื่อว่า "PartA" และ "PartB"
local partA = workspace.PartA
local partB = workspace.PartB
local origin = partA.Position
local direction = partB.Position - partA.Position
local ray = Ray.new(origin, direction)
local rayValue = Instance.new("RayValue")
rayValue.Value = ray
rayValue.Name = "PartA-to-PartB Ray"
rayValue.Parent = workspace
-- เรย์คาสต์เพื่อค้นหาชิ้นส่วนใดๆ ระหว่าง PartA และ PartB
local part = workspace:FindPartOnRay(ray)
if part then
print("Hit part: " .. part:GetFullName())
else
-- สิ่งนี้ไม่ควรเกิดขึ้น เนื่องจากลำแสงของเราเริ่มต้นที่ส่วน A
-- และชี้ไปที่ส่วน B ดังนั้นเราควรโจมตีส่วน B เสมอ
-- หรือส่วนอื่น
print("No part hit!")
end
สรุป
อีเวนต์
ยิงเมื่อ RayValue.Value เปลี่ยนแปลง
คุณสมบัติ
วิธีการ
อีเวนต์
Changed
อีเวนต์นี้จะเกิดขึ้นเมื่อใดก็ตามที่คุณสมบัติ RayValue.Value เปลี่ยนแปลงจะทำงานร่วมกับค่าใหม่ที่ถูกเก็บไว้ในวัตถุอาร์กิวเมนต์แทนที่จะเป็นสตริงที่แทนที่คุณสมบัติที่เปลี่ยนแปลง
อีเวนต์นี้ เช่นเหตุการณ์อื่นที่เปลี่ยนแปลงไป สามารถใช้เพื่อติดตามเมื่อมีการเปลี่ยนแปลง RayValue และติดตามมูลค่าที่แตกต่างกันที่อาจเปลี่ยนไป
อีเวนต์ที่เปลี่ยนไปเทียบเท่าสำหรับวัตถุที่คล้ายกันมีอยู่ เช่น NumberValue และ StringValue ขึ้นอยู่กับประเภทวัตถุที่เหมาะสมที่สุดต่อความต้องการ
พารามิเตอร์
ค่าหลังการเปลี่ยนแปลง
ตัวอย่างโค้ด
The below example, assuming all referenced objects existed, would print the RayValue's new value each time it changed. In the example below it would print "{0, 0, 0}, {0.577350199, 0.577350199, 0.577350199}".
local value = Instance.new("RayValue")
value.Parent = workspace
value.Changed:Connect(function(NewValue)
print(NewValue)
end)
local start = Vector3.new(0, 0, 0)
local lookAt = Vector3.new(10, 10, 10)
local ray = Ray.new(start, (lookAt - start).Unit)
value.Value = ray