ฉันจะทำความสะอาดซากปรักหักพังที่ผู้เล่นสร้างขึ้นได้อย่างไร?


92

ในเกมล่าสุดที่ฉันทำคุณสามารถแบ่งวัตถุสองมิติได้ตามต้องการแสดงใน gif นี้:

ป้อนคำอธิบายรูปภาพที่นี่

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

ฉันไม่แน่ใจจริงๆว่าจะจัดการกับมันอย่างไรจึงไม่มีเศษซากปรักหักพังมากนัก ฉันไม่ต้องการลบพวกเขาหลังจากผ่านไประยะหนึ่ง ฉันไม่ชอบวิธีถ้าคุณกลับไปที่สิ่งที่คุณตัดในขณะที่มันหายไปแบบสุ่ม

ฉันจะทำความสะอาดซากปรักหักพังที่ผู้เล่นสร้างขึ้นได้อย่างไร?


17
มันไม่ชัดเจนจากคำถามของคุณในสิ่งที่คุณต้องการ คุณบอกว่าคุณต้องการที่จะ "ล้างเศษหินหรืออิฐ" แต่ในขณะเดียวกันคุณบอกว่าคุณไม่ต้องการเศษซากที่จะหายไปหลังจากนั้นไม่นาน
Philipp

10
Tiny & Big จะทำลายชิ้นเล็ก ๆ ค่อนข้างแน่ใจว่าชิ้นส่วนที่ใหญ่กว่าอยู่รอบ ๆ ระดับ แต่ฉันจำไม่ได้ นี่คือตัวอย่าง: youtu.be/236ly0ApPqg?t=177
TyCobb

2
สิ่งที่อยู่นอกช่วงสามารถลบออกและแทนที่เมื่อคุณกลับมา
Loren Pechtel

3
แค่ความเห็นเล็ก ๆ น้อย ๆ ของฉัน แต่ตั้งขนาดวัตถุขั้นต่ำที่จะได้รับผลกระทบจากการกระทำที่ตัด ถ้ามันยากที่จะแยกชิ้นส่วนที่คุณกำลังตัดออกไปคุณก็ไม่สามารถตัดได้ (นอกเหนือจากเกมการเปลี่ยนแปลงที่ดีคนนี้มีขาแน่นอน!)
AJFaraday

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

คำตอบ:


71

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

ลบชิ้นเล็กมาก

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

จำกัด ผู้เล่นคัท

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


1
คิดว่าฉันจะทำเกมแรกเพราะฉันไม่ได้วางแผนที่จะสร้างเกมไขปริศนาใด ๆ
Ducktor

36
Micheal Bay เกิดขึ้นเมื่อชิ้นส่วนเล็ก ๆ หายไปเช่นกัน นั่นไม่ใช่บันทึกมันเป็นขี้เลื่อย หรือระเบิดขี้เลื่อย ทำไมจะไม่ล่ะ?!
corsiKa

26
@corsiKa หากคุณเพิ่มเอฟเฟกต์การเผาบางส่วนลงในการเคลื่อนไหวการตัดของคุณอาจทำให้การตัดออกจากรอยไหม้เกรียมที่จุดสัมผัสด้วยความกว้างที่แน่นอน หากวัตถุมีขนาดเล็กจนเต็ม "เกรียม" อาจระเบิดและลุกไหม้ในเวลาไม่นาน
ต. ส.

155

คิดออกคอขวดของคุณ

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

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

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

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


ฉันจะไม่พูดเกี่ยวกับการปรับให้เหมาะสมสำหรับวัตถุจำนวนมากที่ไกลจากผู้เล่นเนื่องจากปัญหาดูเหมือนว่าจะเกิดขึ้นเมื่อโต้ตอบกับวัตถุ

มีปัญหาเมื่อคุณทำให้พวกเขาย้าย

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

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


พ้นขอบเขต

ฉันเชื่อว่าเมื่อมันมาถึงการล้างเศษหินหรืออิฐสิ่งแรกที่ต้องมีคือการลบวัตถุที่อยู่นอกขอบเขต ตัวอย่างเช่นชิ้นส่วนที่ตกลงไปในหลุม หากไม่มีวิธีที่ผู้เล่นควรจะสามารถไปที่นั่นเพื่อดูมันไม่มีเหตุผลที่จะให้มันไปรอบ ๆ

ฉันจะกลับมาที่นี่


ทำให้สมจริงยิ่งขึ้น(ตอนที่ 1)

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

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

ซึ่งหมายความว่าคุณจะไม่สามารถตัดสิ่งที่มีขนาดเล็กกว่าความหนานั้นได้ในความเป็นจริงการพยายามทำสิ่งนั้นจะเป็นการลบออกจากเกม นั่นเป็นสิ่งที่ดี! มันหมายถึงว่ามีขอบเขตบนของเศษหินหรืออิฐที่มีอยู่และมีวิธีการทางกลไกที่ดีในการทำความสะอาดในเกม


เปลี่ยนเกียร์สำหรับวัตถุขนาดเล็ก

สิ่งนี้จะทำงานได้ดีขึ้นหากการชนกันของปัญหา

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

คุณอาจปฏิบัติต่อวัตถุที่มีขนาดเล็กลงได้โดยไม่ต้องชนกัน พิจารณาการชนกันระหว่างวัตถุเหล่านั้นกับวัตถุตัวแทนเท่านั้น (เช่นตัวละครประจำตัวของตัวละครหรือตัวละครที่ควบคุมโดย AI)

ในที่สุดวัตถุขนาดเล็กมากอาจกลายเป็นฝุ่น (ผลกระทบของอนุภาค)


ทำให้สมจริงยิ่งขึ้น(ตอนที่ 2)

สิ่งนี้จะทำงานได้ดีขึ้นหากการชนกันของปัญหา

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

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


ผสานวัตถุ

สิ่งนี้จะทำงานได้ดีขึ้นหากจำนวนวัตถุมีปัญหา

เคล็ดลับทั่วไปที่เกมจำนวนมากใช้เพื่อจัดการกับการปล่อยจำนวนมากที่อาจส่งผลกระทบต่อประสิทธิภาพคือการรวมกลุ่มการรวมเข้าด้วยกัน

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


ทำให้สมจริงยิ่งขึ้น (ตอนที่ 3)

คุณเคยได้ยินเรื่องของลมบ้างไหม? มีลมในโลกแห่งความจริง

ใช้ลมเพื่อผลักวัตถุขนาดเล็กออกไป

ฉันรู้ว่ามันสามารถตอบโต้การใช้งานง่ายเพราะมันหมายความว่าวัตถุขนาดเล็กไม่ได้พักผ่อนอย่างน้อยก็ทันที อ่านด้านล่างก่อนตัดสินใจ

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

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

คุณสามารถลบวัตถุบางอย่างในขณะที่ผู้เล่นไม่มองคุณมีพรของฉัน

นอกจากนั้นตอนนี้คุณมีข้ออ้างในการเพิ่มลมซึ่งคุณสามารถเพิ่มลมเป็นส่วนหนึ่งของกลไกหรืออุปสรรคอื่น ๆ ของเกม คุณยังสามารถเพิ่มวิญญาณแห่งสายลมในการเล่าเรื่องที่พยายามรักษาสิ่งต่าง ๆ ให้สะอาดถ้าคุณมีความโน้มเอียง

หมายเหตุ : คุณไม่จำเป็นต้องเรียกลมเมื่อมีเศษหินหรืออิฐในการทำความสะอาด (แม้ว่าจะใช้งานได้) คุณอาจมีลมเกิดขึ้นตามช่วงเวลาที่สุ่ม


บีเว่อร์!

สัตว์ชนิดหนึ่งที่น่ารำคาญมาพร้อมกับขโมยไม้ของคุณ!

ตอนนี้คุณมีประเภทศัตรู!

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


มันคือการแลกเปลี่ยนทั้งหมด

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

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

ให้ความคิดสร้างสรรค์มาจากข้อ จำกัด เหล่านั้น

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


36
โพสต์นี้เป็นคำตอบที่ชัดเจนสำหรับปัญหาเศษหินหรืออิฐที่ล้นออกมา คุณได้ให้ข้อมูลสรุปเกี่ยวกับเทคนิคอย่างละเอียดในขณะเดียวกันก็แสดงให้เห็นอย่างชัดเจนถึงความจำเป็นในการสร้างสรรค์และเลือกวิธีการแก้ปัญหาที่เหมาะกับสถานการณ์ของคุณในขณะที่ยังแสดงให้เห็นว่ากลไกและการเล่าเรื่องสามารถไหลไปด้วยกันได้อย่างไร ฉันแค่อยากจะบอกว่าฉันมีปัญหาในการแสดงว่าฉันประทับใจ
Dragomok

12
การพยายามตัดวัตถุที่มีขนาดเล็กกว่าความกว้างของลำแสงไม่จำเป็นต้องทำให้วัตถุหายไปโดยสิ้นเชิง แต่อาจให้วัตถุที่เล็กกว่าหนึ่งชิ้นแทน สิ่งสำคัญคือจำนวนวัตถุสามารถเพิ่มได้ก็ต่อเมื่อวัตถุที่ตัดมีขนาดเกินความกว้างของลำแสง
supercat

1

โลกไม่ต่อเนื่อง คุณไม่สามารถแสดงวัตถุที่เล็กกว่าหนึ่งพิกเซลดังนั้นอย่าอนุญาตให้วัตถุนั้นมีอยู่ (นี่คล้ายกับบางจุดความสมจริงของTheraot )

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

หากตัด cuttables ทั้งหมดเป็นพิกเซลแต่ละพิกเซลจะทำให้คุณมีวัตถุมากเกินกว่าจะติดตามได้ขนาดขั้นต่ำที่ใหญ่กว่าอาจยังคงใช้ได้

หรือเพียงแค่ไม่ต้องกังวลกับมัน หากผู้เล่นเตรียมพร้อมที่จะใช้เวลาตัดวัตถุเป็นฝุ่นนานพวกเขาจะไม่รีบร้อนเพื่อให้สามารถจัดการกับความล่าช้าที่เกิดขึ้นได้ ;-)

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