ควรจะสร้างกำแพงให้เป็นระนาบหรือเป็นกล่อง?


22

สิ่งที่เป็นประโยชน์ของผนังเป็นเครื่องบินหรือกล่อง? ฉันควรใช้เครื่องบินที่มีกล่องเก็บของแทนเครื่องตาข่าย

คำตอบ:


15

จะมีสองสิ่งที่แตกต่างที่คุณต้องพิจารณา

หมายเหตุ:ประโยชน์ที่ได้รับจากการปรับให้เหมาะสมที่อธิบายไว้ด้านล่างนี้มีความสำคัญกับกำแพงเป็นจำนวนมาก ณ จุดนั้นอาจเป็นการดีที่จะพิจารณาวิธีการแก้ปัญหาที่แตกต่างกันเช่นการแบ่งพาร์ติชั่นช่องว่างแบบไบนารี (BSP) สำหรับสร้างกำแพงของคุณในเกมของคุณ สิ่งนี้จะทำให้ระดับของคุณได้รับการปรับให้เหมาะสมที่สุดสำหรับการเรนเดอร์ (ถ้าออกแบบอย่างถูกต้อง) และสำหรับฟิสิกส์ (เนื่องจากคุณมีคำจำกัดความที่ดีมากเกี่ยวกับสิ่งที่ชนกันและสิ่งที่ไม่

การกระทำ

กล่องจะใช้ในการเรนเดอร์มากกว่าระนาบ มีจุดยอดและรูปสามเหลี่ยมมากขึ้นหมายถึงจุดสุดยอดของคุณและเครื่องแรสเซอร์ที่จะต้องทำงานมากกว่าข้อมูลเพิ่มเติม ดังนั้นใช้เฉพาะกล่องเมื่อคุณต้องการในแง่ของการมองเห็น ลบใบหน้าตามต้องการสำหรับสิ่งที่ผู้เล่นจะต้องเห็น

ฟิสิกส์

คุณควรใช้ a BoxColliderเมื่อเทียบกับMeshColliderเมื่อคุณสามารถ MeshColliders ต้องใช้การชนกันต่อหน้า (หรือเป็นฮัลล์นูน) ของตาข่ายและทำให้ raycasting และฟิสิกส์ช้าลง (แต่มันเป็นจำนวนเล็กน้อยสำหรับเพียงหนึ่งกล่อง) อีกสิ่งหนึ่งBoxCollidersคือมันยากสำหรับผู้เล่นที่จะผ่านพวกเขาเมื่อพวกเขากำลังจะไปอย่างรวดเร็วจริงๆ แม้จะมีการชนกันอย่างต่อเนื่องหากคุณพบว่าตัวเองยังมีสิ่งต่าง ๆ ทะลุผ่านผนังคุณก็สามารถขยายภาพได้เสมอBoxColliders

ผลผลิต

หากคุณทำงานกับเครื่องบินได้เร็วขึ้นMeshColliders(เพราะคุณไม่จำเป็นต้องปรับทุกอย่างBoxCollidersเพื่อให้ตรงกับมิติของมัน) มันอาจจะดีถ้าคุณใช้มันหากคุณได้รับประสิทธิภาพที่คุณต้องการ


10

ขยายบิต "เบิร์น" 's จุด :

การเรนเดอร์ : หากคุณสร้างกำแพงเป็นระนาบเดียวผนังจะมองเห็นได้จากด้านหนึ่งเท่านั้นเนื่องจากระนาบ (หรือมากกว่านั้นตรงใบหน้า) มีด้านที่แสดงผลเพียงด้านเดียว ดังนั้นหากผู้เล่นสามารถเคลื่อนที่ไปรอบ ๆ กำแพงได้คุณจะต้องมีเครื่องบินหลายลำเพื่อให้ครอบคลุมทุกด้านซึ่งหมายความว่าคุณจะต้องจบด้วยกล่องต่อไป

ฟิสิกส์ : colliders เรขาคณิตง่าย ๆ (ทรงกลม, กล่อง, ฯลฯ ) จะเร็วกว่าเสมอในการคำนวณเมื่อเทียบกับ colliders ตาข่ายแบบเต็มเนื่องจากไม่ได้ตรวจสอบใบหน้าทั้งหมดของตาข่าย สามารถใช้ raycasts "แบบง่าย" หรือการคำนวณระยะทาง (เช่นระยะทางถึงศูนย์กลางของทรงกลมลบด้วยขนาดทรงกลม)

สำหรับเอนจิ้นฟิสิกส์อื่น ๆ ที่มี "เครื่องบิน collider" แยกต่างหาก (ซึ่ง Unity ไม่ได้) จะไม่มี "ดีกว่า" เครื่องบินอาจมีประสิทธิภาพการทำงานที่เร็วขึ้นเล็กน้อย แต่คุณอาจพบกับปัญหาของวัตถุที่รวดเร็วผ่านมันไปโดยไม่เกิดการชนกัน แล้วคุณจะเหลือทั้งมี colliders หนา (เพื่อให้กล่องแทนของเครื่องบิน) หรือย้ายไปอย่างต่อเนื่อง Collission ตรวจจับ (CCD) ตามที่อธิบายไว้ที่นี่


คุณสามารถปิด backface ที่คัดมาได้ตลอดเวลา
Bálint

2
@ Bálint True ผู้ใช้อาจเห็นผนังจากอีกด้านหนึ่งแม้ว่าจะมีแสงที่ผิดในกรณีนั้น (แสงที่ส่งมาจากอีกด้านหนึ่ง / ห้องจากอีกด้านหนึ่งแทนที่จะเป็นแสงที่เขา / เธอยืนอยู่)
Philip Allgaier

ในจุดที่สองของคุณคุณไม่ได้ระบุว่ามันเป็นมืออาชีพหรือการต่อต้านและเพื่ออะไร เครื่องบินดูเหมือนเรียบง่ายกว่ารูปทรงเรขาคณิตดังนั้นประเด็นของคุณคืออะไร?
Bakuriu

@Bakuriu เท่าที่ฉันรู้ความสามัคคีไม่มี "collider เครื่องบิน" ดังนั้น "กล่อง" เป็นสิ่งที่ใกล้ที่สุด ฉันเพิ่มบันทึกย่อสำหรับเอ็นจิ้นฟิสิกส์อื่น ๆ
Philip Allgaier

4

อีกสิ่งหนึ่งที่เกี่ยวกับการแสดงผล: เมื่อคุณใช้การทำแผนที่เงาของคุณเองผนังที่ทำจากกล่องสามารถเหนือกว่ากำแพงที่ทำจากเครื่องบินเนื่องจากการแพนกล้องที่สามารถปรากฏขึ้นพร้อมกับเครื่องบิน

นี่คือคำอธิบายของอาการ:

http://www.opengl-tutorial.org/intermediate-tutorials/tutorial-16-shadow-mapping/#peter-panning


ปีเตอร์แพนคืออะไร?
Pichi Wuana

คุณติดตามลิงก์ที่ฉันให้ไว้หรือไม่ ควรอธิบายด้วยตนเอง
Djindjidj

0

ฉันมักจะบอกเสมอว่าถ้าหากคุณมีเงาที่ดีที่สุดที่จะทำให้เป็นของแข็งเพื่อช่วยในการมีเลือดออกเนื่องจากความแตกต่างในเชิงลึกคือขนาดเล็กและจะมีเลือดออก

ฉันอาจจะผิด แต่ฉันสร้างกำแพงและสิ่งต่าง ๆ ของฉันแบบนั้นทั้งสองด้านกำแพงจะมีเพียงไม่กี่ verts ดังนั้นมันจึงไม่น่าจะประหยัดได้มากนักโดยใช้เครื่องบิน

มีบางสิ่งที่ฉันทิ้งไว้ แต่ส่วนใหญ่จะเป็นด้านล่างหรือด้านบนของสิ่งที่มีสิ่งต่าง ๆ มากมายรอบ ๆ มันเพื่อช่วยในการมีเลือดออกเบา ๆ

ฉันทำแบบเดียวกันกับวิชาฟิสิกส์ทุกคนไม่ได้คิดอย่างนั้นจริง ๆ แต่สำหรับฉันแล้วมันดูเหมือนถูกต้องที่จะใช้กำแพงเป็นกำแพงและเครื่องบินเป็นระนาบ แต่นั่นเป็นเพียงฉัน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.