การแยกสถานะของโลกและแอนิเมชั่นในเกมพื้นฐาน
คุณจัดการกับการแยกอนิเมชั่นจากสภาวะโลกในเกมที่มีการเปิดได้อย่างไร? ฉันกำลังทำงานกับเกม 2D กริดในปัจจุบัน โค้ดด้านล่างนี้ง่ายต่อการอธิบายได้ดีขึ้น เมื่อนักแสดงเคลื่อนไหวฉันต้องการที่จะหยุดการไหลของการหมุนในขณะที่สิ่งมีชีวิตเคลื่อนไหวและย้ายไปยังตำแหน่งใหม่ มิฉะนั้นหน้าจออาจล้าหลังสถานะโลกอย่างมีนัยสำคัญซึ่งอาจทำให้เกิดรูปลักษณ์ที่แปลกประหลาด ฉันต้องการมีภาพเคลื่อนไหวที่ไม่ปิดกั้นการไหลของเกม - เอฟเฟกต์ของอนุภาคสามารถเปิดออกได้หลายรอบโดยไม่ส่งผลต่อการเล่นเกม สิ่งที่ฉันทำคือแนะนำภาพเคลื่อนไหวสองประเภทซึ่งฉันเรียกว่าการปิดกั้นภาพเคลื่อนไหวและภาพเคลื่อนไหวที่ไม่ปิดกั้น เมื่อผู้เล่นต้องการย้ายรหัสที่ถูกเรียกใช้งานคือ class Actor { void move(PositionInfo oldPosition, PositionInfo newPosition) { if(isValidMove(oldPosition, newPosition) { getGame().pushBlockingAnimation(new MoveAnimation(this, oldPosition, newPosition, ....)); player.setPosition(newPosition); } } } จากนั้นห่วงการอัพเดทหลักจะ: class Game { void update(float dt) { updateNonBlockingAnimations(dt); //Effects like particle explosions, damage numbers, etc. Things …