ผู้เล่นกระวนกระวายใจกับผนังเมื่อกดปุ่มค้างไว้


17

ดังนั้นฉันจึงสร้าง RPG จากบนลงล่าง

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

ขอบคุณ!

PS: ฉันใช้ transform.translate เพื่อย้ายผู้เล่นและฉันใช้ C #

แก้ไข : ฉันยังใช้ 2D Rigidbody และ 2Dbox colliders ทั้งสอง


คุณเพียงแค่ต้องทำการทดสอบแบบกวาดก่อนที่จะแปล
มิคเคล


โอ้ เอ่อ ... ฉันไม่แน่ใจว่าจะเพิ่มสิ่งนี้ใน Unity C # ได้อย่างไร ฉันยังใหม่กับ C # หากคุณมีความรู้คุณจะอธิบายวิธีนำสิ่งนี้ไปใช้หรือไม่?
GMR516

คำตอบ:


51

การกระวนกระวายใจกำลังเกิดขึ้นเพราะคุณกำลังบิดผู้เล่นเข้ามาในกำแพงโดยใช้ Transform.Translate และขั้นตอนฟิสิกส์กำลังพูดว่า "เฮ้เราอยู่ในกำแพงแล้วลองแก้ปัญหาการชนกันนี้แล้วผลักผู้เล่นออกจากกำแพง ."

เพื่อหลีกเลี่ยงนี้เมื่อใช้ Rigidbody2D ก็แนะนำให้ใช้Rigidbody2D.MovePosition สิ่งนี้ทำให้แน่ใจว่าคุณจะไม่ได้มี colliders ที่ทับซ้อนกันเมื่อเคลื่อนที่ ถ้าคอลลิเดอร์และคนแข็งเกร็งไม่สามารถเคลื่อนไหวได้เพราะมีบางอย่างขวางกั้นมันจะไม่กระวนกระวายใจ

ใช้ Rigidbody2D.MovePosition คุณอาจต้องการตั้งค่าRigidbody2D.interpolationเพื่อให้การเคลื่อนไหวดูราบรื่น

อย่างไรก็ตามหาก Rigidbody2D.MovePosition ไม่เหมาะสำหรับเกมของคุณด้วยเหตุผลบางอย่างและคุณยังต้องการใช้ Transform.Translate ให้ใช้Physics2D.Raycast (หรือปลดเปลื้องPhysics2Dอื่น ๆ) เพื่อดูว่าการเคลื่อนไหวจะทำให้คุณชนกำแพงหรือไม่และ ย้ายเฉพาะในกรณีที่ไม่มีกำแพงชน

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