PartOperation
*เนื้อหานี้แปลโดยใช้ AI (เวอร์ชัน Beta) และอาจมีข้อผิดพลาด หากต้องการดูหน้านี้เป็นภาษาอังกฤษ ให้คลิกที่นี่
คลาสที่เป็นนามธรรมที่ทุกส่วนขึ้นอยู่กับ การโมเดล링แข็ง ที่สืบทอดมา
สรุป
คุณสมบัติ
ระดับรายละเอียดที่ใช้ในการเรนเดอร์ชิ้นส่วนโมเดลที่แข็ง
มุมในองศาที่มีผลต่อการเรนเดอร์ที่ราบรื่นของส่วนโมเดลที่แข็งแกร่ง
จํานวนเหลี่ยมในโมเดลของของแข็งนี้
ตั้งค่าว่า PartOperation สามารถเปลี่ยนสีได้โดยใช้คุณสมบัติสีที่มีอยู่แล้ว
กำหนดระดับรายละเอียดที่ฟิสิกส์ของชิ้นส่วนจะปฏิบัติตามเมชของมัน
กำหนดการแสดงรูปทรงที่ใช้ในการคำนวณแรงและแรงบิดทางอากาศ
กำหนดว่าชิ้นส่วนเป็นอนันต์ตามฟิสิกส์หรือไม่
ความเร็วในแนวมุมของการประกอบชิ้นส่วน
ศูนย์กลางของมวลของการประกอบชิ้นส่วนในพื้นที่โลก
ความเร็วเชิงเส้นของการประกอบชิ้นส่วน
มวลรวมของการประกอบชิ้นส่วน
การอ้างอิงถึงส่วนรากของการประกอบ
กำหนดว่าชิ้นจะโต้ตอบกับการจำลองเสียงทางกายภาพหรือไม่ คล้ายกับ CastShadow สำหรับแสง
กำหนดประเภทพื้นผิวสำหรับด้านหลังของชิ้นส่วน
กำหนดประเภทพื้นผิวสำหรับด้านล่างของชิ้นส่วน
กำหนดสีของชิ้นส่วน
กำหนดตำแหน่งและทิศทางของ BasePart ในโลก
กำหนดว่าชิ้นส่วนจะชนกับชิ้นส่วนอื่นหรือไม่
กำหนดว่าชิ้นส่วนจะถูกพิจารณาในระหว่างการดำเนินการค้นหาในพื้นที่หรือไม่
กำหนดว่าจะมีการเรียกไฟ Touched และ TouchEnded กิจกรรมบนส่วนหรือไม่
กำหนดว่าส่วนใดมีเงาหรือไม่
อธิบายตำแหน่งของโลกที่ศูนย์กลางของมวลของชิ้นส่วนอยู่
อธิบายชื่อกลุ่มการชนกันของชิ้นส่วน
กำหนดสีของชิ้นส่วน
บ่งชี้คุณสมบัติทางกายภาพปัจจุบันของชิ้นส่วน
กำหนดคุณสมบัติทางกายภาพหลายอย่างของชิ้นส่วน
ใช้เพื่อเปิดใช้งานหรือปิดใช้งานแรงอากาศในชิ้นส่วนและชิ้นส่วนประกอบ
ขนาดทางกายภาพที่แท้จริงของ BasePart ตามที่เครื่องกลศาสตร์กำหนด
กำหนดประเภทพื้นผิวสำหรับด้านหน้าของชิ้นส่วน
กำหนดประเภทพื้นผิวสำหรับด้านซ้ายของชิ้นส่วน
กำหนดตัวคูณสำหรับ BasePart.Transparency ที่มองเห็นได้เฉพาะกับไคลเอนต์ท้องถิ่นเท่านั้น
กำหนดว่าส่วนใดสามารถเลือกได้ใน Studio
อธิบายมวลของชิ้นส่วน ผลิตภัณฑ์ของความหนาแน่นและปริมาณ
กำหนดว่าชิ้นส่วนมีส่วนร่วมในมวลหรือแรงเฉื่อยของร่างกายแข็งหรือไม่
กำหนดเทกเจอร์และคุณสมบัติทางกายภาพเริ่มต้นของชิ้นส่วน
ชื่อของ MaterialVariant .
อธิบายการหมุนของชิ้นส่วนในโลก
ระบุออฟเซ็ตของจุดศูนย์กลางของชิ้นส่วนจาก CFrame ของมัน
อธิบายตำแหน่งของชิ้นส่วนในโลก
เวลาตั้งแต่อัปเดตฟิสิกส์ครั้งล่าสุด
กำหนดจํานวนส่วนที่สะท้อนกล่องท้องฟ้าได้
อธิบายการเปลี่ยนแปลงขนาดเล็กที่สุดที่อนุญาตโดยวิธี Resize()
อธิบายใบหน้าที่ส่วนสามารถปรับขนาดได้
กำหนดประเภทพื้นผิวสำหรับด้านขวาของชิ้นส่วน
กฎหลักในการกำหนดส่วนรากของการประกอบ
การหมุนของชิ้นส่วนในองศาสำหรับสามแกน
กำหนดขนาดของชิ้นส่วน (ความยาว ความกว้าง ความสูง)
กำหนดประเภทพื้นผิวสำหรับด้านบนของชิ้นส่วน
กำหนดจำนวนส่วนที่สามารถมองเห็นได้ผ่าน (ตรงกันข้ามของความทึบของส่วน)
วิธีการ
แทนที่รูปร่างของนี้ PartOperation ด้วยรูปร่างของอีก PartOperation คน
ใช้แรงกระตุกแบบมุมกับการประกอบ
ใช้แรงกระตุ้นกับการประกอบที่การประกอบ center of mass .
ใช้แรงกระตุ้นกับการประกอบในตำแหน่งที่กำหนด
ส่งคืนว่าชิ้นส่วนสามารถชนกันได้หรือไม่
ตรวจสอบว่าคุณสามารถกำหนดสิทธิ์เจ้าของเครือข่ายส่วนได้หรือไม่
คืนตารางชิ้นส่วนที่เชื่อมโยงกับวัตถุโดยใช้ข้อต่อแข็งใดๆ
คืนข้อต่อหรือข้อจำกัดทั้งหมดที่เชื่อมโยงกับส่วนนี้
ส่งค่าของคุณสมบัติ Mass กลับ
ส่งคืนผู้เล่นปัจจุบันที่เป็นเจ้าของเครือข่ายส่วนนี้หรือ nil ในกรณีของเซิร์ฟเวอร์
ส่งคืนค่าจริงหากเครื่องเกมตัดสินเจ้าของเครือข่ายสำหรับส่วนนี้โดยอัตโนมัติ
คืนส่วนฐานของการประกอบชิ้นส่วน
คืนตารางของชิ้นส่วนทั้งหมด BasePart.CanCollide ที่ถูกตัดกับชิ้นส่วนนี้
คืนความเร็วเชิงเส้นของการประกอบชิ้นส่วนในตำแหน่งที่กำหนดเมื่อเทียบกับชิ้นส่วนนี้
ส่งคืนจริงหากวัตถุเชื่อมต่อกับส่วนที่จะถือไว้ในตําแหน่ง (เช่นส่วน Anchored ) มิฉะนั้นจะส่งคืนเป็นเท็จ
เปลี่ยนขนาดของวัตถุเช่นเดียวกับการใช้เครื่องมือปรับขนาดของ Studio
ตั้งผู้เล่นที่กำหนดเป็นเจ้าของเครือข่ายสำหรับส่วนที่เชื่อมต่อทั้งหมดและส่วนนี้
ให้เครื่องเกมตัดสินได้อย่างไดนามิกว่าใครจะจัดการกับฟิสิกส์ของชิ้นส่วน (หนึ่งในไคลเอนต์หรือเซิร์ฟเวอร์)
- IntersectAsync(parts : Instances,collisionfidelity : Enum.CollisionFidelity,renderFidelity : Enum.RenderFidelity):Instance
สร้างใหม่ IntersectOperation จากเรขาคณิตที่ซ้อนทับของชิ้นส่วนและชิ้นส่วนอื่นๆ ในช่วงที่กำหนด
- SubtractAsync(parts : Instances,collisionfidelity : Enum.CollisionFidelity,renderFidelity : Enum.RenderFidelity):Instance
สร้างใหม่ UnionOperation จากส่วนโดยลบเอกภาพที่ใช้โดยชิ้นส่วนในช่องที่กำหนด
- UnionAsync(parts : Instances,collisionfidelity : Enum.CollisionFidelity,renderFidelity : Enum.RenderFidelity):Instance
สร้างใหม่ UnionOperation จากส่วน, บวกกับรูปร่างที่ใช้โดยชิ้นส่วนในช่วงที่กำหนด
รับจุดศูนย์กลางของ PVInstance .
เปลี่ยน PVInstance พร้อมกับบรรดาลูกหลานทั้งหมดของมัน PVInstances ทำให้จุดศูนย์กลางอยู่ที่ตําแหน่งที่ระบุแล้ว CFrame
อีเวนต์
อีเวนต์รับทอดมาจากBasePartไฟเมื่อชิ้นหยุดสัมผัสอีกชิ้นเนื่องจากการเคลื่อนไหวทางกายภาพ
ไฟเมื่อชิ้นส่วนสัมผัสกับชิ้นส่วนอื่นเนื่องจากการเคลื่อนไหวทางกายภาพ
คุณสมบัติ
RenderFidelity
คุณสมบัตินี้กำหนดระดับรายละเอียดที่ชิ้นโมเดลที่แข็งจะแสดงในสามารถตั้งค่าเป็นค่าที่เป็นไปได้ของ enum Enum.RenderFidelity
ค่าเริ่มต้นคือ Automatic ซึ่งหมายความว่ารายละเอียดส่วนจะขึ้นอยู่กับระยะห่างจากกล้องตามที่ระบุไว้ในตารางต่อไปนี้
<th>เรนเดอร์ความจงรักภักดี</th></tr></thead><tbody><tr><td>น้อยกว่า 250 สตัด</td><td>สูงสุด</td></tr><tr><td>250-500 สตัด</td><td>ปานกลาง</td></tr><tr><td>สตัด 500 หรือมากกว่า</td><td>ต่ำสุด</td></tr></tbody>
ระยะห่างจากกล้อง |
---|
SmoothingAngle
คุณสมบัตินี้แทนที่มุมในองศาสำหรับค่าเกณฑ์ระหว่างปกติบนใบหน้าในส่วน โมเดลแข็ง ที่มีค่าพอยต์หากความแตกต่างปกติน้อยกว่ามูลค่า ค่าปกติจะถูกปรับเพื่อลดความแตกต่างในขณะที่มูลค่าระหว่าง 30 และ 70 องศามักจะให้ผลลัพธ์ที่ดี มูลค่าระหว่าง 90 และ 180 ไม่แนะนำเนื่องจากอาจทําให้เกิดผลกระทบ "การฉาย" ต่อสหภาพที่มีขอบแหลมคม
โปรดทราบว่าการบาลานซ์ไม่ส่งผลต่อปกติระหว่างวัสดุหรือสีที่แตกต่างกัน

<figcaption><code>คลาส.PartOperation.SmoothingAngle|SmoothingAngle</code> = 0</figcaption>

<figcaption><code>Class.PartOperation.SmoothingAngle|SmoothingAngle</code> = 50</figcaption>
UsePartColor
ตั้งค่าว่า PartOperation สามารถเปลี่ยนสีได้โดยใช้คุณสมบัติ BasePart.Color หรือ BasePart.BrickColorเมื่อถูกต้อง สหภาพทั้งหมดจะถูกสีตาม Color หรือ BrickColor ตามลำดับเมื่อเท็จ ส่วนในสหภาพจะรักษาสีเดิมไว้จากก่อนที่จะดำเนินการหัวหอม
วิธีการ
SubstituteGeometry
แทนที่รูปร่างของนี้ PartOperation ด้วยรูปร่างของอีก PartOperation คนสิ่งนี้ทำให้ง่ายต่อการใช้เรขาคณิตของการจำลองโซลิดเช่น UnionAsync() , SubtractAsync() หรือ IntersectAsync() แต่ยังคงรักษาคุณสมบัติ คุณลักษณะ แท็ก และบุตรของส่วนหลักเช่น Attachments , Constraints , ParticleEmitters , วัตถุเบา ภาพวาด และอื่นๆวิธีนี้ยังหลีกเลี่ยง "flicker" ที่อาจเกิดขึ้นจากการแทนที่ทั้งหมดด้วยต้นฉบับ PartOperation ด้วยอื่นอีกด้วย
โปรดทราบว่าหากคุณเรียกวิธีนี้บน PartOperation ที่มีลูก Attachments หรือ Constraints คุณควรคำนวณตัวอย่างที่ได้รับผลกระทบด้วย CalculateConstraintsToPreserve() จากนั้นปล่อยตัวอย่างที่พ่อแม่แนะนำเป็น nil
พารามิเตอร์
เอฟเฟกต์ PartOperation ซึ่งจะแทนที่เอฟเฟกต์ของเอฟเฟกต์นี้ PartOperation
ส่งค่ากลับ
ตัวอย่างโค้ด
The following example substitutes the geometry of one PartOperation with the geometry of another PartOperation, then drops constraints/attachments that should not be preserved after substitution.
local GeometryService = game:GetService("GeometryService")
local mainPart = workspace.PurpleBlock
local otherParts = { workspace.BlueBlock }
local options = {
CollisionFidelity = Enum.CollisionFidelity.Default,
RenderFidelity = Enum.RenderFidelity.Automatic,
SplitApart = false,
}
local constraintOptions = {
tolerance = 0.1,
weldConstraintPreserve = Enum.WeldConstraintPreserve.All,
}
-- Perform union operation in pcall() since it's asyncronous
local success, newParts = pcall(function()
return GeometryService:UnionAsync(mainPart, otherParts, options)
end)
if success and #newParts > 0 and mainPart:IsA("PartOperation") then
-- Set first part in resulting operation as part to use for substitution
-- First part is simply an option; this can be any PartOperation
local substitutePart = newParts[1]
-- Reposition part to the position of main part
substitutePart.CFrame = mainPart.CFrame
-- Calculate constraints/attachments to either preserve or drop
local recommendedTable = GeometryService:CalculateConstraintsToPreserve(mainPart, newParts, constraintOptions)
-- Substitute main part's geometry with substitution geometry
mainPart:SubstituteGeometry(substitutePart)
-- Drop constraints/attachments that are not automatically preserved with substitution
for _, item in pairs(recommendedTable) do
if item.Attachment then
if item.ConstraintParent == nil then
item.Constraint.Parent = nil
end
if item.AttachmentParent == nil then
item.Attachment.Parent = nil
end
elseif item.WeldConstraint then
if item.Parent == nil then
item.WeldConstraint.Parent = nil
end
end
end
-- Destroy other parts
for _, otherPart in pairs(otherParts) do
otherPart.Parent = nil
otherPart:Destroy()
end
end